python numpy的简单用法汇总

1. Python numpy基础简介

NumPy是Python的一个开源科学计算库,它包含了一个强大的N维数组对象和用于数组运算的各种函数。NumPy主要是由一个多维数组(ndarray)对象构成,而在这个对象上完成各种各样的计算。使用NumPy,可以大大地提高Python计算的效率。在使用前,首先需要导入NumPy包,import numpy。

ndarray对象:NumPy中最核心的对象,即N维数组,它是一个具有独立数据类型和大小的同类数据容器。

下方代码是创建一个ndarray对象的例子:

import numpy as np

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

print(a)

输出结果为:

[1 2 3]

2. 创建数组

2.1 创建一维数组

在NumPy中,可以通过不同的函数来创建一维数组,如下所示:

import numpy as np

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

b = np.arange(10)

c = np.linspace(0, 1, num=5, endpoint=False)

d = np.zeros(3)

e = np.ones(3)

其中,np.array()函数用于根据普通的Python列表创建一个ndarray对象。

np.arange()函数用于创建一个一维数组,数组的元素是从0到给定整数的序列,步长为1。

np.linspace()函数用于创建指定长度的等差数列,可以指定初始值、终止值和元素个数。

np.zeros()函数用于创建一个指定长度全为0的一维数组。

np.ones()函数用于创建一个指定长度全为1的一维数组。

2.2 创建二维数组

类似于创建一维数组,我们可以使用上述函数来创建二维数组,如下所示:

import numpy as np

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

b = np.arange(12).reshape(3, 4)

c = np.zeros((2, 3))

d = np.ones((2, 4))

其中,np.array()函数同样可以用于创建二维数组。

np.arange()函数可以创建一个二维数组,但需要使用reshape()函数来改变数组的形状。

np.zeros()函数同样可以用于创建二维数组,需要传递元组作为参数表示数组的形状。

np.ones()函数同样可以用于创建二维数组,需要传递元组作为参数表示数组的形状。

3. 数组操作

3.1 数组形状操作

数组维度:NumPy中一维数组的形状为(n,),二维数组的形状为(n,m),三维数组的形状为(n,m,k),以此类推。

可以通过ndarray对象的shape属性来检查数组的维度,使用reshape()函数来改变数组的形状,如下所示:

import numpy as np

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

print(a.shape)

b = a.reshape(3, 2)

print(b)

输出结果为:

(2, 3)

[[1 2]

[3 4]

[5 6]]

可以看到,原来形状为(2, 3)的数组经过reshape()函数的改变后变成了形状为(3, 2)的数组。

3.2 数组轴操作

数组轴:NumPy中的轴是表示数组的维度的对象,对于二维数组,轴0表示行,轴1表示列。

在NumPy中,对于一维数组,可以使用reshape()函数来改变它的形状,但对于多维数组,改变它的形状可能会导致数据在轴方向上的混淆,因为轴的方向不能改变。在这种情况下,我们可以使用transpose()函数对数组的轴进行交换。

下方代码是对一个二维数组的轴进行交换的例子:

import numpy as np

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

b = a.transpose()

print(b)

输出结果为:

[[1 4]

[2 5]

[3 6]]

最终得到的数组会将原数组的轴0和轴1互换,即原来的第一行变成了第一列,原来的第二行变成了第二列。

3.3 数组加、减、乘、除、矩阵乘法

NumPy中的数组加、减、乘、除、矩阵乘法等运算可以直接对数组执行,如下所示:

import numpy as np

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

b = np.array([4, 5, 6])

c = a + b

d = a - b

e = a * b

f = a / b

g = np.dot(a, b)

其中,+表示数组加法,-表示数组减法,*表示数组乘法,/表示数组除法,np.dot()函数表示矩阵乘法,使用时需要传递两个数组作为参数。

4. 数组索引和切片操作

4.1 数组索引

在NumPy中,可以使用下标操作来获取一个数组的元素,如下所示:

import numpy as np

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

print(a[0])

输出结果为:

1

对于二维数组,可以通过下标操作来获取指定位置的元素,如下所示:

import numpy as np

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

print(a[1, 1])

输出结果为:

5

可以看到,a[1,1]表示获取第二行第二列的元素。

4.2 数组切片

对于一维数组,可以使用切片操作来获取一个数组的子数组,如下所示:

import numpy as np

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

print(a[1:4])

输出结果为:

[2 3 4]

可以看到,a[1:4]表示获取从下标为1的元素到下标为3的元素(不包括下标为4的元素)的子数组。

对于二维数组,可以使用切片操作来获取一个数组的子数组,如下所示:

import numpy as np

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

print(a[:, 1:])

输出结果为:

[[2 3]

[5 6]]

可以看到,a[:,1:]表示获取第二列及以后的所有元素组成的子数组。

5. 数组统计运算

在NumPy中,可以使用各种统计函数来进行数组元素的统计运算,如下所示:

import numpy as np

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

print(np.sum(a)) # 数组元素求和

print(np.mean(a)) # 数组元素平均值

print(np.var(a)) # 数组元素方差

print(np.std(a)) # 数组元素标准差

print(np.max(a)) # 数组元素最大值

print(np.min(a)) # 数组元素最小值

print(np.argmax(a)) # 数组元素最大值所在位置

print(np.argmin(a)) # 数组元素最小值所在位置

上述函数可以直接对数组执行,求得相应的统计结果。

6. 总结

本文主要介绍了NumPy中的基本概念和常用操作,包括创建数组、数组操作、数组索引和切片操作、数组统计运算等内容。NumPy具有很强的数据处理能力,可以帮助我们更方便地处理和分析数据。

后端开发标签