NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
1. 数组创建import numpy as np # numpy.arange(start, stop, step, dtype) x = np.arange(10,20,2) a = np.array([1, 2, 3, 4, 5, 6], ndmin=2) a = np.array([[1, 2, 3], [4, 5, 6]]) print(a) print(a.dtype) a = np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) print(a.dtype) b = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32) print(b.dtype) #np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) a = np.ones((2, 3, 4)) a = np.zeros((2, 3, 4)) a = np.linspace(1, 10, 10) a = np.linspace(1, 10, 10).reshape([2, 5]) a = np.arange(9) a = np.linspace(1, 10, 10).reshape(2, 5) a = np.arange(0, 10, 2) a = np.arange(12).reshape(3, 4) x = [(1, 2, 3), (4, 5, 6)] a = np.asarray(x) a = np.logspace(2, 5) # np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) print(a)2.查看数组属性
a = np.array([[1, 2, 3], [4, 5, 6]]) print(a.shape) print(a.ndim) print(a.itemsize)3. 数组切片和筛选
a = np.arange(10)
s = slice(2, 7, 2) # 从索引 2 开始到索引 7 停止,间隔为2
print(a[s])
print(a[2:7:2])
a = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6]])
print(a[..., 1]) # 第2列元素
print(a[1, :]) # 第2行元素
print(a[:, 1:]) # 第2列及剩下的所有元素
a = np.arange(60).reshape(3, 4, 5)
print(a[..., 3]) # 多个冒号用省略号代替
print(a)
print(a[:, 1, 1])
print(a[:, 1, -1]) # 最后一个维度取最后一个
# numpy.sort(a, axis, kind, order)
a = np.array([[3, 7], [9, 1]])
print(np.sort(a))
# numpy.where()
print("numpy.where()")
a = np.array([2, 4, 6, 8, 10])
print(a[np.where(a > 5)]) # 等价于 a[ a> 5]
print(a[a > 5])
# 例子的条件为[[True,False], [True,False]], 分别对应最后输出结果的四个值。
# 第一个值从[1,9]中选,因为条件为True,所以是选1。
# 第二个值从[2,8]中选,因为条件为False,所以选8,后面以此类推。
print(np.where([[True, False], [True, True]], [[1, 2], [3, 4]], [[9, 8], [7, 6]]))
# numpy.extract() 函数根据某个条件从数组中抽取元素,返回满条件的元素。
a = np.arange(10)
condition = np.mod(a, 2) == 0
np.extract(condition, a) # 数组中提取出能整除2的数
4. 数组统计
a = np.arange(27).reshape(3, 3, 3) print(a) print(np.max(a, axis=2)) #最大值 print(np.argmax(a, axis=2)) #最大值索引 print(np.min(a, axis=2)) print(np.argmin(a, axis=2)) np.mean(a) np.mean(a, axis=0) np.average(a) np.std(a) np.var(a)
5. 数组运算
a = np.arange(9).reshape(3, 3) b = a * 2 print(b) print(a+b) print(np.hsplit(a, 3)) # 沿着水平方向分割为3个相同大小的子数组 x = np.split(a, 3, axis=1) print(x) # x为含有三个子数组的列表 print(a.flatten()) # 展开数组 np.vsplit(a, 3) np.split(a, 3, axis=0) a = np.arange(60).reshape(3, 4, 5) print(np.dsplit(a, 5)) # 按深度方向分割数组



