NumPy 数组操作

NumPyNumPyBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

NumPy 是一个用于数值计算的 Python 库。它专为处理数组和矩阵而设计,是科学计算中的强大工具。在本实验中,你将学习与 NumPy 数组操作相关的以下三个主题:

  1. 数学运算
  2. 广播(Broadcasting)
  3. 通用函数(Universal Functions)

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL numpy(("NumPy")) -.-> numpy/ArrayBasicsGroup(["Array Basics"]) numpy(("NumPy")) -.-> numpy/MathandStatisticsGroup(["Math and Statistics"]) numpy(("NumPy")) -.-> numpy/AdvancedFeaturesGroup(["Advanced Features"]) numpy/ArrayBasicsGroup -.-> numpy/1d_array("1D Array Creation") numpy/ArrayBasicsGroup -.-> numpy/multi_array("Multi-dimensional Array Creation") numpy/ArrayBasicsGroup -.-> numpy/shape_dim("Shapes and Dimensions") numpy/ArrayBasicsGroup -.-> numpy/data_type("Data Types") numpy/MathandStatisticsGroup -.-> numpy/math_ops("Math Operations") numpy/MathandStatisticsGroup -.-> numpy/stats("Statistical Analysis") numpy/AdvancedFeaturesGroup -.-> numpy/ufuncs("Universal Functions") subgraph Lab Skills numpy/1d_array -.-> lab-1403{{"NumPy 数组操作"}} numpy/multi_array -.-> lab-1403{{"NumPy 数组操作"}} numpy/shape_dim -.-> lab-1403{{"NumPy 数组操作"}} numpy/data_type -.-> lab-1403{{"NumPy 数组操作"}} numpy/math_ops -.-> lab-1403{{"NumPy 数组操作"}} numpy/stats -.-> lab-1403{{"NumPy 数组操作"}} numpy/ufuncs -.-> lab-1403{{"NumPy 数组操作"}} end

数学运算

NumPy 提供了多种针对数组的数学运算。这些运算可以在一个或多个数组上执行。

打开 Python Shell

在终端中输入以下命令以打开 Python shell:

python3

导入 NumPy

NumPy 已经安装,你可以在 Python 代码中导入它:

import numpy as np

逐元素运算

逐元素运算是指对数组中的每个元素执行的操作。

让我们创建两个数组并执行一些逐元素运算:

## 创建两个数组
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])

## 两个数组相加
print("两个数组相加: ", arr1 + arr2)

## 两个数组相减
print("两个数组相减: ", arr1 - arr2)

## 两个数组相乘
print("两个数组相乘: ", arr1 * arr2)

## 两个数组相除
print("两个数组相除: ", arr1 / arr2)

## 计算两个数组的模运算
print("两个数组的模运算: ", arr1 % arr2)

## 将数组的元素提升到指定幂次
print("数组的幂运算: ", arr1 ** 2)

输出:

两个数组相加:  [ 6  8 10 12]
两个数组相减:  [-4 -4 -4 -4]
两个数组相乘:  [ 5 12 21 32]
两个数组相除:  [0.2        0.33333333 0.42857143 0.5       ]
两个数组的模运算:  [1 2 3 4]
数组的幂运算:  [ 1  4  9 16]

数组级运算

数组级运算是指对整个数组执行的操作。

让我们创建一个数组并执行一些数组级运算:

## 创建一个数组
arr = np.array([1, 2, 3, 4])

## 计算数组中所有元素的和
print("数组的和: ", np.sum(arr))

## 计算数组中所有元素的乘积
print("数组的乘积: ", np.prod(arr))

## 查找数组中的最小元素
print("数组中的最小元素: ", np.min(arr))

## 查找数组中的最大元素
print("数组中的最大元素: ", np.max(arr))

## 计算数组中所有元素的平均值
print("数组的平均值: ", np.mean(arr))

## 计算数组中所有元素的标准差
print("数组的标准差: ", np.std(arr))

输出:

数组的和:  10
数组的乘积:  24
数组中的最小元素:  1
数组中的最大元素:  4
数组的平均值:  2.5
数组的标准差:  1.118033988749895

广播(Broadcasting)

广播(Broadcasting)是 NumPy 的一项特性,允许在不同形状的数组之间执行逐元素操作。广播在处理不同维度的数组时尤其有用。

让我们创建一个数组并执行一些广播操作:

## 创建两个不同形状的数组
array1 = np.array([1, 2, 3])
array2 = np.array([[4, 5, 6], [7, 8, 9]])

## 将较小的数组广播到较大的数组
print("使用广播进行数组相加: ", array1 + array2)

print("使用广播进行数组相减: ", array1 - array2)

print("使用广播进行数组相乘: ", array1 * array2)

print("使用广播进行数组相除: ", array1 / array2)

输出:

使用广播进行数组相加:  [[ 5  7  9]
                         [ 8 10 12]]

使用广播进行数组相减:  [[-3 -3 -3]
                          [-6 -6 -6]]

使用广播进行数组相乘:  [[ 4 10 18]
                          [7 16 27]]

使用广播进行数组相除:  [[0.25       0.4        0.5       ]
                           [0.14285714 0.25       0.33333333]]

在上述代码中,我们创建了两个数组,array1 的形状为 (3,),array2 的形状为 (2,3)。借助 NumPy 的广播特性,我们在 array1array2 之间执行了逐元素操作。较小的数组 array1 被广播到较大的数组 array2,以便执行逐元素操作。广播使得在不同形状的数组上执行操作成为可能。

通用函数(Universal Functions)

通用函数(Universal Functions,简称 ufuncs)是以逐元素方式操作数组的函数。它们提供了快速且高效的数组操作。

让我们创建一个数组并执行一些通用函数操作:

## 创建一个数组
arr = np.array([1, 2, 3, 4])

## 计算数组中每个元素的平方根
print("数组的平方根: ", np.sqrt(arr))

## 计算数组中每个元素的指数
print("数组的指数: ", np.exp(arr))

## 计算数组中每个元素的正弦值
print("数组的正弦值: ", np.sin(arr))

## 计算数组中每个元素的余弦值
print("数组的余弦值: ", np.cos(arr))

## 计算数组中每个元素的自然对数
print("数组的自然对数: ", np.log(arr))

输出:

数组的平方根:  [1.         1.41421356 1.73205081 2.        ]
数组的指数:  [ 2.71828183  7.3890561  20.08553692 54.59815003]
数组的正弦值:  [ 0.84147098  0.90929743  0.14112001 -0.7568025 ]
数组的余弦值:  [ 0.54030231 -0.41614684 -0.9899925  -0.65364362]
数组的自然对数:  [0.         0.69314718 1.09861229 1.38629436]

总结

恭喜!你现在已经学习了 NumPy 数组操作,包括数学运算、广播(Broadcasting)和通用函数(Universal Functions)。通过这些知识,你现在可以使用 Python 执行广泛的数值计算任务。