📅  最后修改于: 2023-12-03 15:40:52.751000             🧑  作者: Mango
如果你需要处理数值、矩阵或数组数据,那么你一定不能错过 NumPy(Numerical Python)这个工具库!NumPy 具有高效、快速地处理多维数组数据的能力,是科学计算、数据处理或机器学习等领域中必不可少的工具之一。
本篇文章将详细介绍如何使用 Python 描述一个 NumPy 数组。
在使用 NumPy 之前,你需要先下载并安装 NumPy 库。如果你使用的是 Anaconda,那么可以直接在 Anaconda Prompt 中输入以下命令来安装:
conda install numpy
如果你使用的是 pip,那么可以在终端(或命令提示符)中输入以下命令来安装:
pip install numpy
安装完成后,在 Python 脚本中导入 NumPy 库:
import numpy as np
我们一般把 numpy
模块导入并且赋予一个别名 np
,这样代码更为简洁。
创建一个一维数组:
a = np.array([1, 2, 3])
创建一个二维数组:
b = np.array([[1, 2, 3], [4, 5, 6]])
创建一个三维数组:
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
我们可以使用以下属性获取数组的相关信息:
ndim
: 获取数组的维度(秩)shape
: 获取数组的形状,即每个维度的大小。返回值为一个元组(tuple),每个元素表示对应维度的大小。size
: 获取数组的元素总数dtype
: 获取数组中元素的数据类型例如:
a = np.array([1, 2, 3])
print(a.ndim) # 输出:1
print(a.shape) # 输出:(3,)
print(a.size) # 输出:3
print(a.dtype) # 输出:int32
其中,shape
返回的是一个元组,而一维数组的元组只有一个元素,因此 a.shape
返回的是 (3,)
。
对于二维、三维数组同理:
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b.ndim) # 输出:2
print(b.shape) # 输出:(2, 3)
print(b.size) # 输出:6
print(b.dtype) # 输出:int32
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(c.ndim) # 输出:3
print(c.shape) # 输出:(2, 2, 2)
print(c.size) # 输出:8
print(c.dtype) # 输出:int32
通过 dtype
属性我们可以修改数组的类型:
a = np.array([1, 2, 3], dtype=float)
print(a.dtype) # 输出:float64
可以使用下标或切片访问 NumPy 数组的元素。
对于一维数组:
a = np.array([1, 2, 3])
print(a[1]) # 输出:2
print(a[0:2]) # 输出:[1 2]
print(a[-1]) # 输出:3
对于二维数组:
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b[0, 1]) # 输出:2
print(b[0:2, 0:2]) # 输出:[[1 2] [4 5]]
print(b[:, 1]) # 输出:[2 5]
print(b[-1]) # 输出:[4 5 6]
对于三维数组:
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(c[0, 1, 1]) # 输出:4
print(c[0:2, :, :]) # 输出:[[[1 2] [3 4]] [[5 6] [7 8]]]
print(c[1, :, 0]) # 输出:[5 7]
NumPy 数组的运算可以说是 NumPy 库的另一个重要特性。相比 Python 内置的 List,NumPy 数组支持向量化运算,也就是可以对数组的每个元素进行运算,而不是遍历整个数组进行运算。
例如,我们可以对两个 NumPy 数组进行加法:
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c) # 输出:[5 7 9]
或者对数组进行广播(Broadcast):
a = np.array([[1, 2], [3, 4]])
b = np.array([10, 20])
c = a + b
print(c) # 输出:[[11 22] [13 24]]
除此之外,NumPy 还提供了众多的高级运算函数,如 reshape
(改变数组的形状)、transpose
(转置数组)等。
本篇文章介绍了 NumPy 数组的创建、属性、访问和运算等基本特性,并提供了相应的示例代码。当然,NumPy 库还涉及到很多优秀的特性和函数,需要更深入的了解才能充分发挥其威力。如果你希望深入了解,可以参考 NumPy 官方文档或者参考其他学习资源。