我有一个一维 numpy ndarray V。我的运算是 H = (V/a)**b,其中 a 和 b 只是标量。这很简单,但我需要运行多个实验(数千次),尝试 a 和 b 的不同变体。使用 for 循环很容易做到这一点,但我希望它尽可能快地运行,所以我想进行矢量化。所以,假设我也生成了 a 和 b 的一维 ndarray。给定 3 个一维数组 V、a 和 b,我该如何有效地完成此操作?谢谢!
最佳答案
你可以这样做:
import numpy as np
V = np.arange(100.0)
a = np.random.rand(50)
b = np.random.rand(50)
result = (V[np.newaxis, :] / a[:, np.newaxis]) ** b[:, np.newaxis]
result
的大小为 50x100,因此 result[i]
将是使用参数 a[i]
和 的结果>b[i]
.
关于python - 向量化 numpy 运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46426016/