1 | NumPy is the fundamental package for scientific computing with Python. |
废话不多说,numpy
的重要性不言而喻,直接看代码。
1 | import numpy as np |
1 | array([[ 0, 1, 2, 3], |
- 默认的操作是element wise的
1 | data * 10 |
1 | array([[ 0, 10, 20, 30], |
1 | data.shape |
1 | (3, 4) |
1 | data.dtype |
1 | dtype('int64') |
1 | data.ndim |
1 | 2 |
- 布尔型数组用于索引
1 | data[data<5] = 0 |
1 | array([[ 0, 0, 0, 0], |
1 | data.T |
1 | array([[ 0, 0, 8], |
1 | np.dot(data.T,data) |
1 | array([[ 64, 72, 80, 88], |
一元ufunc
1 | np.sqrt(data) |
1 | array([[ 0. , 0. , 0. , 0. ], |
1 | np.exp(data) |
1 | array([[ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00, |
二元ufunc
1 | x = np.random.randn(8) |
1 | array([ 1.19911478, -0.87448992, 0.32508143, -0.29231038, 0.78727289, |
1 | y = np.random.randn(8) |
1 | array([ 0.83002571, -0.11149519, -0.26294768, -0.18584947, 0.04441277, |
1 | z = np.power(x,y) |
1 | array([ 1.16266997, nan, 1.34375634, nan, 0.98943356, |
三元ufunc where
1 | x = np.array([1.1,1.2,1.3,1.4,1.5]) |
1 | array([ 1.1, 2.2, 1.3, 1.4, 2.5]) |
数学和统计方法
1 | data = np.arange(12).reshape(3,4) |
1 | array([[ 0, 1, 2, 3], |
1 | data.mean() |
1 | 5.5 |
1 | data.mean(axis=0) |
1 | array([ 4., 5., 6., 7.]) |
1 | data.mean(axis=1) |
1 | array([ 1.5, 5.5, 9.5]) |
1 | data.sum(axis=1) |
1 | array([ 6, 22, 38]) |
累加
1 | data.cumsum(0) |
1 | array([[ 0, 1, 2, 3], |
累乘
1 | data.cumprod(0) |
1 | array([[ 0, 1, 2, 3], |
用于布尔型数组的方法
1 | arr = np.random.randn(100) |
1 | 57 |
any 和 all :
- any用于测试数组中是否存在一个或者多个True,
- all用于检测数组中所有值是否都是True
1 | bools = np.array([False,False,True,False]) |
1 | True |
1 | bools.all() |
1 | False |
1 | arr = np.random.randn(5,3) |
1 | array([[ 0.3300801 , -0.1068226 , -0.45340813], |
1 | arr.sort(1) |
1 | array([[-0.45340813, -0.1068226 , 0.3300801 ], |
线性代数
唯一化
找出数组中的唯一值,并且返回已经排序的结果。
1 | names = np.array(['Bob','Bob','Cer',"Vivien","Cer"]) |
1 | array(['Bob', 'Cer', 'Vivien'], |
文件读写
1 | np.save("names",names) |
1 | array(['Bob', 'Bob', 'Cer', 'Vivien', 'Cer'], \n dtype='|S6') |
使用 np.c_[] 和 np.r_[] 分别添加行和列
1 | a = np.array([[1,2,3],[4,5,6],[7,8,9]]) |
1 | array([[ 1., 2., 3., 1.], |
1 | np.r_[a,b] #添加行(错误) |
1 | ValueError: all the input arrays must have same number of dimensions |
1 | np.r_[a,b.reshape(1,3)] #添加行(正确),维度要一致,形状要对 |
1 | array([[ 1., 2., 3.], |
1 | np.c_[a,b.reshape(3,1)] |
1 | array([[ 1., 2., 3., 1.], |
使用insert
使用insert更简洁
1 | np.insert(a, 0, values=b, axis=1) |
1 | array([[1, 1, 2, 3], |
1 | np.insert(a, 1, values=b, axis=1) |
1 | array([[1, 1, 2, 3], |
1 | np.insert(a, 0, values=b, axis=0) |
1 | array([[1, 1, 1], |