前情提要
第 9 课补
-
arr[2, :]
-
np.ix_()
import numpy as np arr2 = np.arange(32).reshape((8,4)) print(arr2) arr2[np.ix_([1,5,7,2],[0,3,1,2])] arr2[np.ix_([1,5,7,2],[0,1,2])]
第 9 课答案
-
略
-
-
np.random.seed(3) x1 = np.random.randint(low=1, high=10, size=100) np.save("save.npy", x1) x1 = np.load("save.npy") print(x1)
-
课程纲要
-
数学计算
- 逻辑运算
np.where
np.all()
np.any()
arr = np.random.rand(2, 3) result = np.where(arr > 0.5, 1, 0) # condition ? arr1: arr2 arr = np.random.rand(2, 3) result = np.all(arr > 0.1)
- 集合运算:文档
arr = np.array([2, 2, 3, 3, 1]) result = np.unique(arr)
-
线性代数:numpy.linalg 库文档
-
np.trace
np.inner()
-
linalg.qr
linalg.svd
arr = np.array([[2, 2, 3, 3], [4, 3, 2, 1]]) U, s, V = np.linalg.svd(arr)
-
统计运算
-
求和
arr.sum(axis=0)
arr = np.random.rand(2, 3) result = np.sum(arr) result = np.sum(arr > 0.5) # 根据条件求真值的和
-
最值
arr.max()
arr.min()
arr.argmin()
arr.argmax()
文档arr = np.random.rand(2, 3) result = np.max(arr) arr = np.random.rand(2, 3) result = np.argmin(arr)
-
算术平均数
np.mean()
arr = np.random.rand(2, 3) result = np.mean(arr)
-
标准差、方差
np.std()
np.var()
- 逻辑运算
-
Numpy 的形状操作
- 添加维度
arr = np.array([1, 2, 3]) result = arr[np.newaxis, :, ] print(arr) print(result)
- 改变维度个数和大小
np.resize()
np.reshape()
,前者改变源数组,后者不会。
arr = np.random.random((4, 4)) print(arr) arr.resize((2, 3)) print(arr) arr.resize((1)) print(arr)
-
NumPy 的广播原理
-
维度和维度大小
-
广播(broadcasting)
-
什么是广播
arr = np.ones((2, 4)) arr2 = 1 print(arr) print(arr2) print(arr + arr2)
-
规则1:数组维度和大小,从后往前有连续的相同部分
arr = np.ones((2, 4, 4)) arr2 = np.ones((4, 4))
-
规则2:不相同的部分维度大小为1
arr = np.zeros((2, 4, 4)) arr2 = np.ones((1, 1))
-
-
Matplotlib
- 画一个三角函数吧
import numpy as np import matplotlib.pyplot as plt X = np.linspace(-np.pi, np.pi, 100) COS, SIN = np.cos(X), np.sin(X) ax = np.zeros(100) plt.plot(COS) plt.plot(SIN) plt.plot(ax) plt.show()