【发布时间】:2021-09-19 19:21:26
【问题描述】:
假设我有一个 NumPy 一维数组a:
a = np.array([1, 2, 3])
我有一个函数foo:
def foo(x, p):
...
return y
我想在a 上应用foo,例如,p 从 1 到 3 以制作二维数组。
【问题讨论】:
-
简单的
for循环有什么问题? -
由于计算成本,我想避免
for循环。事实上,我的问题是我的主要问题的简化版本,我有数百万行和参数。 -
foo函数只是幂函数吗?
-
@DaniMesejo 不一定。
-
我应该为这类问题找到一个合适的
duplicate,因为它经常出现。如果foo只能用特定尺寸调用,例如1d 表示x,标量表示p,每个这样的组合都必须调用一次。多次调用是占用时间的,而不是迭代机制的细节。为了减少numpy的时间,您需要使用numpy编译方法而不进行迭代,例如**power 与 (n,) 和 (1,m) 形状的数组生成 (n,m) 结果。 在尝试“避免循环”之前了解numpy。