假设我有 2 个一维 (1D) numpy 数组a和b,长度分别为n1和n2。我还有一个函数 ,F(x,y)它有两个值。现在我想将该函数应用于两个一维数组中的每对值,因此结果将是一个形状为 的 2D numpy 数组n1, n2。i, j二维数组的元素是F(a[i], b[j])。
a
b
n1
n2
F(x,y)
n1, n2
i, j
F(a[i], b[j])
我一直无法找到一种没有大量 for 循环的方法来做到这一点,而且我确信在 numpy 中有一种更简单(更快!)的方法来做到这一点。
提前致谢!
你可以使用numpy的向量化操作来高效地实现这一点,而不需要使用显式的for循环。以下是你可以做到这一点的方法:
import numpy as np # 定义你的函数 F(x, y) def F(x, y): return x + y # 举例函数,替换为你的实际函数 # 创建 1D numpy 数组 a 和 b a = np.array([1, 2, 3]) b = np.array([4, 5, 6, 7]) # 使用numpy的广播特性将函数应用于每对元素 result = F(a[:, np.newaxis], b) print(result)
这将输出:
[[ 5 6 7 8] [ 6 7 8 9] [ 7 8 9 10]]
解释:
a[:, np.newaxis]
(n1, 1)
F
(i, j)
用你的实际函数替换 F(x, y),这种方法应该可以有效地适用于你的情况。
F(x, y)