Numpy的一些操作
创建
python
# array 创建
np.array([1,2,3]) # [1 2 3]
# arange 创建
np.arange(1 ,10 ,2) # [1 3 5 7 9]
# linspace 线性插值
np.linspace(1 ,10 ,5) # [1 3.25 5.5 7.75 10]
# 创建全0矩阵
np.zeros((2 ,3)) # [[0. 0. 0.][0. 0. 0.]]
# 创建全1矩阵
np.ones((2 ,3)) # [[1. 1. 1.][1. 1. 1.]]
# 创建全n矩阵
np.full((2 ,3) ,5) # [[5 5 5][5 5 5]]
# 创建随机矩阵
np.random.rand(2 ,3) # [[x x x][x x x]]
# 创建单位矩阵
np.eye(3) # [[1. 0. 0.][0. 1. 0.][0. 0. 1.]]
np.identity(3) # [[1. 0. 0.][0. 1. 0.][0. 0. 1.]]
# 创建上下三角矩阵
np.triu(np.ones((3 ,3))) # [[1. 1. 1.][0. 1. 1.][0. 0. 1.]]
np.tril(np.ones((3 ,3))) # [[1. 0. 0.][1. 1. 0.][1. 1. 1.]]
np.tril(np.ones((3 ,3)), k = 1) # [[1. 1. 0.][1. 1. 1.][1. 1. 1.]]
修改维度
python
# 形状修改
arr = np.array([1,2,3,4,5,6])
arr.reshape(2 ,3)
# [[1 2 3]
# [4 5 6]]
# 交换顺序
arr = np.array([[1,2,3],[4,5,6]])
arr.transpose(1,0)
# [[1 4]
# [2 5]
# [3 6]]
选择
python
# [ 维度1, 维度2, 维度3 , ...]
# [ 开始:结束:步长 ]
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr[1, :] # [4 5 6]
arr[1, 1:3] # [5 6]
arr[:, 1:] # [[2 3][5 6][8 9]]
过滤
python
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr[arr > 5] # [6 7 8 9]
# 保持原始形状
np.where(arr > 5, 1, 0) # [[0 0 0][0 0 1][1 1 1]]
np.where(arr > 5) # [[1 1 1][2 2 2][2 2 2]]
特殊值
python
# 空值
np.nan
# 无穷大
np.inf
# 负无穷大
-np.inf
# e
np.e
# pi
np.pi
运算
python
# 对应数字按位运算
arr = np.array([1,2,3,4])
arr + 1 # [2 3 4 5]
arr - 1 # [0 1 2 3]
arr * 2 # [2 4 6 8]
arr / 2 # [0.5 1.0 1.5 2.0]
arr & 1 # [1 0 1 0]
arr | 0 # [1 2 3 4]
# ...
# 特殊函数的按位运算
np.exp(arr)
np.log(arr)
np.sin(arr)
np.cos(arr)
np.power(arr, 2)
np.sqrt(arr)
np.abs(arr)
np.ceil(arr)
np.floor(arr)
# ...
# 求和
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr.sum() # 45
arr.sum(axis = 0) # [16 18 20]
arr.sum(axis = 1) # [ 6 15 24]
# 矩阵运算
arr1 = np.array([1,2,3,4])
arr2 = np.array([5,6,7,8])
# 1. 按位运算
arr1 + arr2
arr1 - arr2
arr1 * arr2
arr1 / arr2
arr1 & arr2
arr1 | arr2
# ...
# 2. 内积(叉乘)
np.dot(arr1, arr2)
# 3. 外积(矩阵乘法)
np.outer(arr1, arr2)
arr1 @ arr2
类型
指定类型 + 内存大小(bits)
python
# 修改类型
arr = np.array([1,2,3,4])
arr.astype(np.int8)