Skip to content

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)