NumPy
的核心是多维数组类numpy.ndarray
,矩阵类numpy.matrix
是多位数组类的派生类。以多位数组类为数据组织结构,Numpy
提供了众多的数学、科学和工函数,此外,NumPy
还提供了以下多个子模块
子模块名 | 功能 |
---|---|
numpy.random |
随机抽样子模块 |
numpy.linalg |
线性代数子模块 |
numpy.fft |
傅里叶变换子模块 |
numpy.ctypeslib |
C-Types外部函数接口子模块 |
numpy.emath |
具有自动域的数学函数子模块 |
numpy.testing |
测试支持子模块 |
numpy.matlib |
矩阵库子模块 |
numpy.dual |
Scipy加速支持子模块 |
numpy.distutils |
打包模块 |
pip install numpy
import numpy as np
append()
、insert()
、pop()
、remove()
Numpy支持的数据类型主要有整形(integer)、浮点型(float)、布尔型(bool)和复数型(complex),每一种数据类型根据占用内存的字节数又分为多个不同的类型,具体的数据类型如图所示。Numpy也支持字符串类型和自定义类型的数据,但绝大多数函数和方法不适用于非数值型数组
np.int8
、np.int16
、np.int32
、np.int64
np.uint8
、np.uint16
、np.uint32
、np.uint64
np.float16
、np.float32
、np.float64
np.bool
np.complex64
、np.complex128
创建数组时,如果不指定数据类型,Numpy会根据输入的参数自动选择合适的数据类型。通常在指定数据类型的时候,可以省略类型后面的数字。如果省略数字,整型和无符号整形默认是32位,浮点型默认是64位,复数型默认是128位
import numpy as np
a = np.array([0, 1, 2])
print(a.dtype)
b = np.array([0, 1, 2.0])
print(b.dtype)
c = np.array([0, 1, 2], dtype=np.uint8)
print(c.dtype)
属性 | 说明 |
---|---|
ndarray |
数组的数据类型 |
ndarray.shape |
数组的结构,也可以理解为数组的形状 |
ndarray.size |
数组的元素个数 |
ndarray.itemsize |
每个元素占用内存的大小,以字节为单位 |
ndarray.ndim |
数组的维度数,也叫秩 |
ndarray.flags |
数组的内存信息 |
ndarray.real |
数组实部 |
ndarray.imag |
数组虚部 |
ndarray.data |
数组在内存中实际存储区域的起始地址 |
import numpy as np
a = np.arange(6)
print(a)
print(a.shape)
print(a.dtype)
# 改变数组结构
b = a.reshape((2, 3))
print(b)
# 改变数据类型
c = b.astype(np.float)
print(c.dtype)
维,就是维度。通常说数组是几维的,就是指维度数,如三维数组的维度数就是3。维度数还有一个专用名字,叫秩,也就是数组属性ndim
。一维数组,类比于一维空间,只有一个轴,那就是0轴。二维数组,类比于二维空间,有两个轴,习惯表示成行和列,行的方向是0轴,列的方向是1轴。三维数组,类比于三维空间,有三个轴,习惯表示成层、行和列,层的方向是0轴,行的方向是1轴,列的方向是2轴
import numpy as np
# 3层2行3列的结构
a = np.arange(18).reshape((3, 2, 3))
print(a)
# 全部元素之和
print(a.sum())
# 0轴方向求和:3层合并成1层,返回二维数组
print(a.sum(axis=0))
# 1轴方向求和:2行合并成1行,返回二维数组
print(a.sum(axis=1))
# 2轴方向求和:3列合并成1列,返回二维数组
print(a.sum(axis=2))
# 分层求和方法1
print(a.sum(axis=1).sum(axis=1))
# 分层求和方法2
print(a.sum(axis=2).sum(axis=1))
要求:数值型数组的各个元素加1
import numpy as np
# 列表实现
a = [0, 1, 2, 3, 4]
for i in range(len(a)):
a[i] += 1
print(a)
# numpy实现
b = np.array([0, 1, 2, 3, 4])
b += 1
print(b)
要求:两个等长的数值型数组的对应元素相加
import numpy as np
# 列表实现
a = [0, 1, 2, 3, 4]
b = [5, 6, 7, 8, 9]
print([i+j for i, j in zip(a, b)])
# numpy实现
a = np.array([0, 1, 2, 3, 4])
b = np.array([5, 6, 7, 8, 9])
print(a+b)