NumPy 数学游戏

PythonBeginner
立即练习

介绍

在这个挑战中,你将练习使用 Python 中的 NumPy 模块。你将实现几个用于操作 NumPy 数组的常用函数,涵盖基础数学运算和数组变换。左侧的文件浏览器中已经为你创建好了必要的文件。

这是一个「挑战」项目,它与「引导实验」不同。你需要尝试独立完成挑战任务,而不是按照实验步骤一步步学习。挑战通常具有一定的难度。如果你觉得困难,可以与 Labby 讨论或查看解决方案。历史数据显示,这是一个高级难度的挑战,通过率为 50%。该挑战在学习者中获得了 97% 的好评率。

逐元素乘法

你的第一个任务是创建一个函数,实现两个 NumPy 数组的逐元素乘法。这意味着第一个数组中的每个元素都将与第二个数组中对应位置的元素相乘。

待办事项

  • 完成 multiply_arrays.py 文件中的 multiply_arrays 函数。

要求

  • 函数名称必须为 multiply_arrays
  • 它必须接收两个 NumPy 数组 ab 作为输入。
  • 它必须返回一个新的 NumPy 数组,该数组是 ab 逐元素相乘的结果。
  • 输入数组将具有相同的形状(shape)。

示例

实现函数后,运行脚本查看结果:

python3 multiply_arrays.py

输出:

Input a: [1 2 3]
Input b: [4 5 6]
Element-wise multiplication result: [4 10 18]
Expected: [4 10 18]
✨ 查看解决方案并练习

矩阵乘法

接下来,你将实现矩阵乘法。与逐元素乘法不同,矩阵乘法遵循特定的线性代数规则,并要求两个矩阵的内部维度必须匹配。

待办事项

  • 完成 matrix_multiply.py 文件中的 matrix_multiply 函数。

要求

  • 函数名称必须为 matrix_multiply
  • 它必须接收两个 NumPy 数组 ab 作为输入。
  • 它必须返回一个新的 NumPy 数组,该数组是 ab 的矩阵乘积。
  • 输入数组将具有符合矩阵乘法要求的形状。

示例

实现函数后,运行脚本查看结果:

python3 matrix_multiply.py

输出:

Input matrix a:
[[1 2]
 [3 4]]
Input matrix b:
[[5 6]
 [7 8]]
Matrix multiplication result:
[[19 22]
 [43 50]]
Expected:
[[19 22]
 [43 50]]
✨ 查看解决方案并练习

数组转置

在这一步中,你将编写一个函数来转置 NumPy 数组。转置数组会交换其行和列。

待办事项

  • 完成 transpose_array.py 文件中的 transpose_array 函数。

要求

  • 函数名称必须为 transpose_array
  • 它必须接收单个 NumPy 数组 a 作为输入。
  • 它必须返回输入数组的转置版本。

示例

实现函数后,运行脚本查看结果:

python3 transpose_array.py

输出:

Original array:
[[1 2 3]
 [4 5 6]]
Transposed array:
[[1 4]
 [2 5]
 [3 6]]
Expected:
[[1 4]
 [2 5]
 [3 6]]
✨ 查看解决方案并练习

数组重塑

现在,你将创建一个函数来重塑(reshape)NumPy 数组。重塑可以在不改变数据的情况下改变数组的维度。总元素数量必须保持不变。

待办事项

  • 完成 reshape_array.py 文件中的 reshape_array 函数。

要求

  • 函数名称必须为 reshape_array
  • 它必须接收一个 NumPy 数组 a 和一个元组 shape 作为输入。
  • 它必须返回一个新数组,该数组包含来自 a 的数据,但具有由 shape 指定的新维度。

示例

实现函数后,运行脚本查看结果:

python3 reshape_array.py

输出:

Original array: [1 2 3 4 5 6]
New shape: (2, 3)
Reshaped array:
[[1 2 3]
 [4 5 6]]
Expected:
[[1 2 3]
 [4 5 6]]
✨ 查看解决方案并练习

计算欧几里得距离

欧几里得距离(Euclidean distance)是衡量两点之间直线距离的常用方法。你的任务是实现一个函数,计算两个一维 NumPy 数组之间的这种距离。

两个向量 ab 之间的欧几里得距离公式为:

d(a, b) = \sqrt{\sum\_{i=1}^{n}(a_i - b_i)^2}

待办事项

  • 完成 euclidean_distance.py 文件中的 euclidean_distance 函数。

要求

  • 函数名称必须为 euclidean_distance
  • 它必须接收两个长度相同的一维 NumPy 数组 ab
  • 它必须返回一个浮点数,表示它们之间的欧几里得距离。

示例

实现函数后,运行脚本查看结果:

python3 euclidean_distance.py

输出:

Point a: [1 2 3]
Point b: [4 5 6]
Euclidean distance: 5.196152422706632
Expected: 5.196152422706632
✨ 查看解决方案并练习

总结

在这个挑战中,你练习了 NumPy 的基础操作。你实现了逐元素乘法、矩阵乘法、数组转置、重塑以及计算欧几里得距离的函数。这些技能对于使用 Python 进行数据分析、机器学习和科学计算至关重要。