Numpy库的核心是高维数组,Numpy中的ndarray对象支持多维数组,数组类型的对象本身具有大小固定,数组内元素数据类型相同等特性。Numpy也提供了大量数值运算函数,能够直接有效的进行向量,矩阵运算。
创建数组
核心函数:
numpy.array([]):创建一维数组;
numpy.array([[],[]]):创建二维或多维
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类似;
代码示例
import numpy as np
创建一维数组:
array1 = np.array(range(8))
查看数组的数据结构:
array1.shape
修改shape属性,变为2维数组(2行3列):
array1.shape = 2, 3
或者用reshape,复制出一个2维数组:
array2 = array1.reshape(2, 3)
上述中,array1和array2是共享数据内存的,即:修改array1的数组内数据,array2也会跟着改变。
也可以通过array直接创建多维数组,只需要传入的参数是多维数组即可:
array3 = np.array([[1, 2, 3], [4, 5, 6]])
通过arange创建一个数组:
array4 = np.arange(13, 1, -1)
通过linspace创建一个等分数组:
array5=np.linspace(1, 12, 12)
初始化一个数组空间,但是不指定值:
n = np.zeros((4, 5))
n2 = np.ones((4, 5), dtype = np.int16)
n3 = np.empty((4, 5), dtype = np.int16)
数组元素的索引和切片
数据切片:
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])相同;