axis = 0 or 1?
- axis = 0 表示纵轴,说明函数导致的变化是从上到下的
- axis = 1 表示横轴,说明函数导致的变化是从左到右的
1. numpy.array
Define
np.array([1,2,3])
np.zeros((n,m)) # n*m 的空矩阵
np.ones((n,m))
np.arange(4) # array([0,1,2,3])
np.arange(1,4) # array([1,2,3])
np.arange(1,6,2) # array([1,3,5])
np.zeros((n,m)) # n*m 的空矩阵
np.ones((n,m))
Modify
arr = np.append(arr, 4) # 从尾端添加元素
arr = arr.reshape(2,2) # 改变数组的维度
arr = arr.ravel() # 展平成一维数组(一行一行排)
1.1 Index
arr.argmax() # 最大值索引
arr.argmin() # 最小值索引
寻找数组中符合条件的元素的位置 (index)
np.argwhere(L == a)
# Example
L = np.array([1, 2, 3, 2])
np.argwhere(L == 2)
>>> array([[1], [3]], dtype=int64)
1.2 Statistics
arr.sum()
arr.mean()
arr.std()
arr.var()
arr.max()
arr.max(axis=1) # 每行最大值(axis=0 每列)
arr.cumsum() # 所有元素的累计和(累加) [1,2,3] >>> [1,3,6]
arr.cumprod() # 所有元素的累计积(累乘)
1.3 Sort
去除数组中的重复数字, 并进行排序之后输出
np.unique([1, 2, 2, 3, 3])
>>> array([1, 2, 3])
np.unique([[1, 1], [2, 3]])
>>> array([1, 2, 3])
1.4 Save and Load
将 numpy.array 类型的数据已 .npy
为格式保存起来
np.save('address/filename.npy', X)
读取 .npy
格式的文件
X = np.load('address/filename.npy')
1.5 Combine, Join
纵向堆叠 np.vstack((a1, a2))
横向堆叠 np.hstack((a1, a2))
a1 = np.array([1, 2, 3])
a2 = np.array([4, 5, 6])
np.vstack((a1, a2))
>>> array([[1, 2, 3],
[4, 5, 6])
多向连接 np.concatenate((a1, ...), axis=0))
# a1, a2 一维
np.concatenate((a1, a2)) # a1.extend(a2)
# a1, a2 二维
### 纵向堆叠 np.vstack((a1, a2))
np.concatenate((a1, a2))
### 横向堆叠 np.hstack((a1, a2))
np.concatenate((a1, a2), axis=1)
2. Calculations
2.1 Matrices
C = np.matmul(A, B) # 矩阵乘法
C = np.dot(A, B) # 矩阵乘法(和 matmul 差不多)
C = np.multiply(A, B) # 点乘(各元素相乘)
u, s, vh = np.linalg.svd(C) # SVD(奇异值分解)
A.sum(axis=0) # 列求和(axis=1 行求和)
2.2 Broadcasting
计算矩阵中每个元素在其所在列的占的比例
col_sum = A.sum(axis=0)
percent = 100*A/col_sum
阶乘(factorial)
np.math.factorial(n)
3. numpy.random
从指定范围内随机选择(生成x行y列的随机二位数组)
# [0,1)
np.random.rand(x, y)
# [5,15)
np.random.rand(x, y) * 10 + 5
# 正态分布(mean 0 variance 1)
np.random.randn(x, y)
从指定列表中随机选择
# 等概率随机(可以反复选取同一个元素)
np.random.choise([1,2,3], size=2, replace=True)
# 等概率随机(一个元素只能被选去一次)
np.random.choise([1,2,3], size=2, replace=False)
# 指定概率随机
np.random.choise([1,2,3], size=100, replace=True, p=[0.2, 0.3, 0.5])
3.1 生成概率分布
np.random.normal(mean, std, size) # 高斯分布,size 可以是多维的
Document Information
- Author: Zeka Lee
- Link: https://zhekaili.github.io/wiki/python-libs/python-lib-NumPy/
- Copyright: 自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)