Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。
Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。
Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。
# NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。
属性名字 |
属性解释 |
ndarray.shape |
数组维度的元组 |
ndarray.ndim |
数组维数 |
ndarray.size |
数组中的元素数量 |
ndarray.itemsize |
一个数组元素的长度(字节) |
ndarray.dtype |
数组元素的类型 |
import numpy as np
a = np.array([[1.,2.,3.],[3.,4.,3.]],dtype=np.float)
print(a.ndim,a.shape,a.dtype,a.size)
import numpy as np
a = np.array([i for i in range(50)])
print(a)
b = np.zeros((3,4))
b1 = np.ones((3,4))
print(b)
print(b1)
c = np.arange(20).reshape(4,5)
print(c)
a = np.random.randn(4,5,7)
print(a)
b = np.random.uniform(0,1,(3,4))
print(b)
张量运算
a = np.arange(0,12).reshape(3,4)
print(a**2)
print(a+a)
print(a/2)
print(a<6)
print(a[a<6])
>>> A = np.array( [[1,1],
... [0,1]] )
>>> B = np.array( [[2,0],
... [3,4]] )
>>> A * B
array([[2, 0],
[0, 4]])
>>> A @ B
array([[5, 4],
[3, 4]])
>>> A.dot(B)
array([[5, 4],
[3, 4]])
聚合函数
a = np.arange(20).reshape(4,5)
print(a.mean())
print(a.sum())
print(a.sum(axis=1))
img = np.random.randn(2,64,64,3)
print(img.max())
print(img.argmax())
print(img.max(axis=3))
print(img.argmax(axis=3))
切片操作
a = np.array([[1, 2, 3, 5], [3, 4, 8, 4], [7, 8, 9, 10]])
print(a.shape)
print(a[1,0])
print(a[1,1::2])
print(a[:,1])
img = np.random.randn(2,3,4,5)
print(img[...,0].shape)
print(img[...,0])
print(img[:,:,:,1])
维度变换
a = np.arange(0,12).reshape(3,4)
print(a.shape)
print(a.reshape(12,1).shape)
a = np.arange(0,12).reshape(3,4)
print(a[:,:,None].shape)
a = np.array([[1, 2, 3], [2, 3, 4]])
b = np.array([[5, 6, 4], [7, 8, 4]])
c = np.stack([a, b], axis=0)
print(c.shape)
print(c)
a = np.array([[1, 2, 3], [2, 3, 4]])
b = np.array([[5, 6, 4]])
c = np.concatenate((a,b),axis=0)
print(c)
rgb = np.random.randn((2, 3, 64, 64))
bgr = rgb[:, ::-1, :, :]
索引
a = np.arange(10)
print(a)
print(a[:-7])
print(a[-1:-7:-1])
print(a[np.array([3,3,-3,8])])
print(a[[3,3,-3,8]])
a = np.arange(10)+1
print(a)
print(a[a > 6])
print(np.where(a>6))