您的位置:

Python np.array函数:创建和操作Numpy数组

一、简介

numpy是Python中处理数值计算的重要库之一,提供了高效的数组(array)数据结构,方便进行向量、矩阵运算等线性代数操作。其中最基本的数据结构np.array就是本文重点介绍的对象,本文将依次从创建、基础操作、多维数组、专用函数、文件读写等角度对np.array进行详细的阐述。

二、创建数组

np.array可以从Python list或tuple创建数组,例如:

import numpy as np
a = np.array([1, 2, 3])
b = np.array((4, 5, 6))
print(a) #[1, 2, 3]
print(b) #[4, 5, 6]

也可以直接传递多维list或tuple创建多维数组:

a = np.array([[1, 2], [3, 4], [5, 6]])
print(a)
[[1 2]
 [3 4]
 [5 6]]

另外,np.zeros、np.ones、np.empty等专门用于创建特定形状数组的工厂函数也是常用的创建数组方式,例如:

a = np.zeros((3, 4))
print(a)
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

上例中,np.zeros((3, 4))将返回一个3×4全是0的数组。一些常用的特定形状数组的创建方式如下表:

函数 描述
np.zeros(shape) 返回指定形状的全0数组
np.ones(shape) 返回指定形状的全1数组
np.empty(shape) 返回指定形状的未初始化数组
np.eye(N) 返回N×N的单位矩阵
np.linspace(start, end, num) 返回start到end范围内,均匀间隔的num个值构成的数组
np.arange(start, end, step) 返回start到end范围内,步长为step的序列构成的数组

三、基础操作

一般对数组的操作都是基于数组的索引,即数组元素位置,例如:

a = np.array([10, 20, 30])
print(a[0]) #10
a[0] = 100
print(a) #[100 20 30]

此外,np.array还支持reshape、transpose、矩阵乘法等基础数学操作。

reshape是重新定义数组的形状(即由维度转换为另一维度形状),例如:

a = np.array([[1, 2, 3], [4, 5, 6]])
b = a.reshape((3, 2))
print(b)
[[1 2]
 [3 4]
 [5 6]]

transpose是交换数组的维度(即将原数组的行列方向互换),例如:

a = np.array([[1, 2, 3], [4, 5, 6]])
b = a.transpose()
print(b)
[[1 4]
 [2 5]
 [3 6]]

注意:transpose函数也可使用np.transpose(a)调用。

矩阵乘法可使用@或dot函数实现:

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = a@b
print(c)
[[19 22]
 [43 50]]
d = np.dot(a, b)
print(d)
[[19 22]
 [43 50]]

四、多维数组

在多元数组中,我们需要特别注意数组的索引方式。例如,对于一个三维数组a,要取其中的(0,1,1)位置元素,可以使用a[0][1][1]、a[0,1,1]等方式。

多维数组的创建可以参考上述创建数组的方式。另外,reshape函数也可用于多维数组的形状变换。

五、专用函数

numpy库提供了大量方便数组操作的专用函数,例如对于下面的一维数组:

a = np.array([1, 2, 3, 4, 5])

可以使用np.mean计算平均值、np.std计算标准差等专用函数:

m = np.mean(a)
print(m) #3.0
s = np.std(a)
print(s) #1.4142...

同时,在多元数组上,这些函数也有着相应的表现,例如:

a = np.array([[1, 2, 3], [4, 5, 6]])
m = np.mean(a)
print(m) #3.5
s = np.std(a, axis=0)
print(s) #[1.5 1.5 1.5]

上例中,np.std函数在axis=0(即列方向)计算标准差,返回数组中每一列的标准差。

六、文件读写

numpy库提供了方便的读写全局变量的numpy.ndarray类型(即数组)的函数,其中最基本的函数是np.save和np.load,可以将文件保存为二进制形式文件和重新加载文件。例如,对于以下二维数组:

a = np.array([[1, 2, 3], [4, 5 ,6]])

可以使用np.save保存为文件:

np.save('a.npy', a)

然后使用np.load重新加载存储为文件的数组:

b = np.load('a.npy')
print(b)
[[1, 2, 3],
 [4, 5, 6]]

注意:保存的文件具有二进制格式,因此在加载时不需要定义数组形状

结语

综上所述,numpy中的np.array函数是Python中处理高维数值计算的重要库之一,具有多种方便的数据结构和操作,可以方便地构建和操作数组。希望本文能够对读者对np.array的理解和实践有所帮助。