参考link https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
基础
Numpy主要用于处理多维数组,数组中元素通常是数字,索引值为自然数
在Numpy中,维度被称为axes,axes的总数为rank (秩)
(关于矩阵秩的概念,可以参考https://www.zhihu.com/question/21605094 与
https://www.applysquare.com/topic-cn/78QfWkiPt/)
Numpy的数组类称为 ndarray,别名array
(numpy.array与 array.array不同,后者只处理一维数组)
ndarray属性
1. ndim
返回数组的秩
2.shape
返回数组各个维度大小
3.size
数组所有元素总个数,与shape结果相等
4.dtype
数组元素类型
5.itemsize
字节表示的元素类型大小,与ndarray.dtype.itemsize相等
int32 -> 4 (32/8) int64 -> 8 (64/8)
6.data
包含数组实际元素的缓存区,通常不使用
举例
1 import numpy as np 2 a=np.arange(15).reshape(3,5) 3 print(a) 4 5 out: 6 array([[ 0, 1, 2, 3, 4], 7 [ 5, 6, 7, 8, 9], 8 [10, 11, 12, 13, 14]]) 9 10 print(type(a)) 11 print(a.shape) 12 print(a.ndim) 13 print(a.dtype.name) 14 print(a.item.size) 15 16 out: 17 numpy.ndarray 18 (3,5) 19 2 20 'int32' 21 4
创建数组
1 #将列表转换为array 2 >>> import numpy as np 3 >>> a = np.array([2,3,4]) 4 >>> a 5 array([2, 3, 4]) 6 >>> a.dtype 7 dtype('int32') 8 >>> b = np.array([1.2, 3.5, 5.1]) 9 >>> b.dtype 10 dtype('float64') 11 12 #创建二维数组array 13 >>> b = np.array([(1.5,2,3), (4,5,6)]) 14 >>> b 15 array([[ 1.5, 2. , 3. ], 16 [ 4. , 5. , 6. ]]) 17 18 #创建一维数组 19 >>> np.arange( 10, 30, 5 ) 20 array([10, 15, 20, 25]) 21 >>> np.arange( 0, 2, 0.3 ) 22 array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8]) 23 24 #使用linespace创建数组 25 >>> from numpy import pi 26 >>> np.linspace( 0, 2, 9 ) 27 array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ]) 28 >>> x = np.linspace( 0, 2*pi, 100 ) 29 >>> f = np.sin(x)
1 >>> b = np.arange(12).reshape(3,4) 2 >>> b 3 array([[ 0, 1, 2, 3], 4 [ 4, 5, 6, 7], 5 [ 8, 9, 10, 11]]) 6 >>> 7 >>> b.sum(axis=0) # 按列求和 8 array([12, 15, 18, 21]) 9 >>> b.sum(axis=1) # 按行求和 10 array([ 6, 22, 38]) 11 >>> b.min(axis=1) # 每行最小值 12 array([0, 4, 8]) 13 >>> b.cumsum(axis=1) # 按列累积求和 14 array([[ 0, 1, 3, 6], 15 [ 4, 9, 15, 22], 16 [ 8, 17, 27, 38]])
1 # 常用函数 2 >>> B = np.arange(3) 3 >>> B 4 array([0, 1, 2]) 5 >>> np.exp(B) 6 array([ 1. , 2.71828183, 7.3890561 ]) 7 >>> np.sqrt(B) 8 array([ 0. , 1. , 1.41421356]) 9 >>> C = np.array([2., -1., 4.]) 10 >>> np.add(B, C) 11 array([ 2., 0., 6.])
1 # 索引、切片、迭代 2 # 一维数组 3 >>a=np.arange(10)**3 4 >>print(a) 5 array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729], dtype=int32) 6 >>a[2] 7 8 8 >>a[2:5] 9 array([ 8, 27, 64], dtype=int32) 10 >>a[:6:2]=-100 11 >>a 12 array([-10, 1, -10, 27, -10, 125, 216, 343, 512, 729], dtype=int32) 13 >>a[::-1] 14 array([729, 512, 343, 216, 125, -10, 27, -10, 1, -10], dtype=int32) 15 16 #多维数组 17 >>> def f(x,y): 18 ... return 10*x+y 19 ... 20 >>> b = np.fromfunction(f,(5,4),dtype=int) 21 >>> b 22 array([[ 0, 1, 2, 3], 23 [10, 11, 12, 13], 24 [20, 21, 22, 23], 25 [30, 31, 32, 33], 26 [40, 41, 42, 43]]) 27 >>> b[2,3] 28 23 29 >>> b[0:5, 1] #第二列 30 array([ 1, 11, 21, 31, 41]) 31 >>> b[ : ,1] #第二列 32 array([ 1, 11, 21, 31, 41]) 33 >>> b[1:3, : ] #第二行、第三行 34 array([[10, 11, 12, 13], 35 [20, 21, 22, 23]]) 36 >>b[-1] #相当于 b[-1,:],最后一行 37 array([40, 41, 42, 43])
来源:https://www.cnblogs.com/feinaio2017/p/8727840.html