📜  用Python描述一个 NumPy 数组(1)

📅  最后修改于: 2023-12-03 15:40:52.751000             🧑  作者: Mango

用Python描述一个 NumPy 数组

如果你需要处理数值、矩阵或数组数据,那么你一定不能错过 NumPy(Numerical Python)这个工具库!NumPy 具有高效、快速地处理多维数组数据的能力,是科学计算、数据处理或机器学习等领域中必不可少的工具之一。

本篇文章将详细介绍如何使用 Python 描述一个 NumPy 数组。

导入 NumPy 库

在使用 NumPy 之前,你需要先下载并安装 NumPy 库。如果你使用的是 Anaconda,那么可以直接在 Anaconda Prompt 中输入以下命令来安装:

conda install numpy

如果你使用的是 pip,那么可以在终端(或命令提示符)中输入以下命令来安装:

pip install numpy

安装完成后,在 Python 脚本中导入 NumPy 库:

import numpy as np

我们一般把 numpy 模块导入并且赋予一个别名 np,这样代码更为简洁。

创建 NumPy 数组

创建一个一维数组:

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]]])
NumPy 数组的属性

我们可以使用以下属性获取数组的相关信息:

  • 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 数组元素

可以使用下标或切片访问 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 数组的运算可以说是 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 官方文档或者参考其他学习资源。