Python中Numpy库的核心是高维数组,Numpy中的ndarray对象支持多维数组。数组类型的对象本身具有大小固定,数组内元素数据类型相同等特性。Numpy也提供了大量数值运算函数,能够直接有效的进行向量,矩阵运算。
创建数组
核心函数:
numpy.array([n1, n2, n3]):创建一维数组;
numpy.array([[n1, n2],[n3, n4]]):创建二维或多维
numpy.reshape():复制一个不同维度的数组,只是维度不同,数据还是共享的
numpy.shape=2,3:直接修改维度
numpy.arange(start, end, step):[start, end)区间,以step为步长的数组,其中start,end区间为前闭后开。
numpy.linspace(start, end, number, dtype): [start, end]区间,产生number个等距离的数据,dtype指定数据类型,其中的区间为闭区间。
numpy.zeros((m,n ), dtype=np.int16):初始化一个m*n的2维数组空间,但是不指定值(初始化成默认值)
numpy.ones((m, n)):与np.zeros类似;
numpy.empty((m, n)):与np.zeros类似;
数组元素的索引和切片
数据切片:
array[start:end:step]:在[start, end)区间,按step步长来抽取数据。区间为前闭后开。如果不指定step,step默认为1,如果不指定end,则退化为只读取start位置的数据。切片生成的数组会和原来的数组共享内存空间,即,其中一个对其中一个数组元素的修改,会导致另一个数组的元素也发生修改。多维数组的情况,以二维数组为例:array[start1:end1:step1, start2:end2:step2]
array[[n1, n2, n3 ...]]:读取数组参数指定位置的数据;这种方法不共享内存空间。多维数组的情况,以二维数组为例:array[[n1,n2,n3 ...], [m1, m2, m3 ...]],会取到array[n1, m1], array[n2, m2], array[n3, m3]的值;
array[(n1, n2, n3), (m1, m3, m3)]: 与array[[n1,n2,n3], [m1, m2, m3])相同;
数组运算
universal function:+, -, *, /, **(乘方),cos, <, >, 求模(mod), 求余(remainder), 乘方(power), 开方(square)等,下面以加法为例:
np.add(array, n):将array中的每个元素都加上n;
np.add(array1, array2) <=> array1+array2:将两个array中的每个元素都相加;
np.add(array1, array2, array1):将相加的结果重新赋值给array1;