引入库:
import numpy as np
a = np.arange(0, 60, 10).reshape((-1, 1)) + np.arange(6)
arange:可传参:[start],stop,[step],[dtype]
reshape((r,c)),把数组按照r行c列重新组合,为-1时此轴会自动计算出;
1*n+n*1,会生成n*n的数组;
上面代码生成数组如下:
array([[ 0, 1, 2, 3, 4, 5],
[10, 11, 12, 13, 14, 15],
[20, 21, 22, 23, 24, 25],
[30, 31, 32, 33, 34, 35],
[40, 41, 42, 43, 44, 45],
[50, 51, 52, 53, 54, 55]])
numpy数组和python列表是不同的,可以通过np.array(list1,list2)根据列表生成数组;
可通过shape方法得到数组形状;
np.linspace(1, 10, 10, endpoint=False),生成从1到10,10个数,是否包含结束可通过endpoint指定;
np.logspace(0, 10, 11, endpoint=True, base=2)生成,0到10,11个数,等比是2;
使用 frombuffer, fromstring, fromfile等函数可以从字节序列创建数组,如:
a=’abcdef’;np.fromstring(a,dtype=np.int8)得到:
array([ 97, 98, 99, 100, 101, 102], dtype=int8)
numpy数组的存取和list类似,
特殊的是:
a[i],a为numpy数组,i 为list,最终得到以i值索引a中的值的数组;
i也可以是一个bool表达式,比如a>5,返回数组中>5的元素;
可以通过a[a>5]=0把a中>5的元素全都置成5;
np.random.rand(10):用来生成10个0~1随机数;
tolist可以将numpy数组转为列表;
unique可用于去重,但是对于多维数组,基于整行去重不能直接使用,因为此函数是先把数组拉成1维,实际上是对单个数进
行去重,如果想进行整行可以用:np.array(list(set(tuple(i) for i in c)));
np.stack((a,b,c),axis=xxx),a,b,c进行堆叠,axis指定堆叠轴;
np.dot(a,b),矩阵a,b的点乘;
a*b,a,b对应元素相乘;
np.concatenate((a,b)),a,b进行拼接;