创建数组

在使用Numpy的数组前,我们必须对Numpy库进行引入。

import numpy as np

我们可以通过将Python列表传递给它并使用 np.array() 来创建一个NumPy数组(也就是强大的ndarray)。在这种情况下,Python创建了下面的数组:

Python中建立一个一维数组 python定义一个一维数组_Python


一个常见的错误在于使用多个数值参数调用 array 函数,而不是提供一个数字列表(List)作为参数。

a = np.array(1,2,3,4)    		# *WRONG*
 a = np.array([1,2,3,4])  		# *RIGHT*

通常情况下,我们希望NumPy为我们初始化数组的值。NumPy为这些情况提供了诸如:ones()zeros()empty()random.random() 之类的方法。

函数 zeros() 创建一个由 0 组成的数组,函数 ones() 创建一个由1数组的数组,函数 empty() 内容是随机的并且取决于存储器的状态,函数 random.random() 创建一个由 [0,1) 。默认情况下,创建的数组的 dtypefloat64

Python中建立一个一维数组 python定义一个一维数组_Python中建立一个一维数组_02


另外,arange() 函数将创建具有有规律递增值的数组。这里给出几个例子:

>>> np.arange(10)
 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 >>> np.arange(2, 10, dtype=np.float)
 array([ 2., 3., 4., 5., 6., 7., 8., 9.])
 >>> np.arange(2, 3, 0.1)
 array([ 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9])

linspace() 函数将创建具有指定数量元素的数组,并在指定的开始值和结束值之间平均间隔。例如:

>>> np.linspace(1., 4., 6)
 array([ 1. ,  1.6,  2.2,  2.8,  3.4,  4. ])

这个创建函数的优点是可以保证元素的数量以及开始和结束点,对于任意的开始,停止和步骤值, arange() 函数通常不会这样做。

创建布尔数组

我们创建一个Numpy数组元素值全为True(真)的布尔数组。

np.full(5, True, dtype=bool)
 Out: array([ True,  True,  True,  True,  True])

上面的 full() 函数用于创建一个填充给定值的数组,dtype 表示给定值的类型。

数组的计算

我们创建两个NumPy数组 dataones ,并进行计算。

Python中建立一个一维数组 python定义一个一维数组_Numpy一维数组_03


下面计算两个数组的和:

Python中建立一个一维数组 python定义一个一维数组_数组_04


通过上面的计算,我们发现,可以像操作变量一样操作Numpy中的数组,而不必使用任何循环结构。

Python中建立一个一维数组 python定义一个一维数组_Python中建立一个一维数组_05


通常情况下,我们希望在数组和单个数值之间执行操作(也可以将其称为向量和标量之间的操作)。比如,我们的数组表示以英里为单位的距离,我们希望将其转换为公里数。可以进行简单的计算 data * 1.6

Python中建立一个一维数组 python定义一个一维数组_Python中建立一个一维数组_06


Numpy数组在进行计算时,数组中的每个元素都进行了计算,这就是上节中提到的 广播 ,这个概念十分的有用。

索引

我们可以通过Python对列表的切片方式,对NumPy数组进行索引和切片:

Python中建立一个一维数组 python定义一个一维数组_Numpy一维数组_07


索引还可以使用负值,如下:

in: print(data[-2]);
 out: 2

数组的常用方法

Numpy数组,为我们提供了很多有用的方法。

Python中建立一个一维数组 python定义一个一维数组_Numpy一维数组_08


除了 min()max()sum(),还有 mean() 求平均值,prod() 得到所有的元素相乘结果,std() 得到的标准偏差,和其他很多的方法。