创建数组
在使用Numpy的数组前,我们必须对Numpy库进行引入。
import numpy as np
我们可以通过将Python列表传递给它并使用 np.array()
来创建一个NumPy数组(也就是强大的ndarray)。在这种情况下,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) 。默认情况下,创建的数组的 dtype 是 float64。
另外,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数组 data
和 ones
,并进行计算。
下面计算两个数组的和:
通过上面的计算,我们发现,可以像操作变量一样操作Numpy中的数组,而不必使用任何循环结构。
通常情况下,我们希望在数组和单个数值之间执行操作(也可以将其称为向量和标量之间的操作)。比如,我们的数组表示以英里为单位的距离,我们希望将其转换为公里数。可以进行简单的计算 data * 1.6
:
Numpy数组在进行计算时,数组中的每个元素都进行了计算,这就是上节中提到的 广播 ,这个概念十分的有用。
索引
我们可以通过Python对列表的切片方式,对NumPy数组进行索引和切片:
索引还可以使用负值,如下:
in: print(data[-2]);
out: 2
数组的常用方法
Numpy数组,为我们提供了很多有用的方法。
除了 min()
,max()
和 sum()
,还有 mean()
求平均值,prod()
得到所有的元素相乘结果,std()
得到的标准偏差,和其他很多的方法。