Numpy库与多维数组

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])相同;

数组运算

猜你喜欢

转载自blog.csdn.net/weixin_40735752/article/details/88082621