我想用numba.vectorize
来并行化一个函数,但是我的函数不接受任何输入。目前,我使用一个虚拟数组和一个从未使用过的虚拟输入函数。在
有没有更优雅/快速的方法(可能不使用numba.vectorize
)?在
代码示例(不是我的实际代码,仅用于演示如何放弃输入):
import numpy as np
from numba import vectorize
@vectorize(["int32(int32)"], nopython=True)
def particle_path(discard_me):
x = 0
for _ in range(10):
x += np.random.uniform(0, 1)
return np.int32(x)
arr = particle_path(np.empty(1024, dtype=np.int32))
print(arr)
如果只处理1D数组,那么可以使用下面的方法,其中数组必须在函数外部实例化。这里似乎没有任何理由使用
vectorize
,您可以简单地用jit
来实现目标,尽管您必须使用它显式地在数组元素上编写循环。如果阵列始终为1D,则可以使用:类似地,您可以使用^{} 属性处理任何维度数组(确保使用
^{pr2}$.size
来获得数组中元素的总数):最后,如果每次运行函数时都需要一个新数组,则可以在函数内部创建数组(如果要反复调用函数并希望重写同一数组,从而节省了反复重新分配同一数组的时间,请使用上述方法)。在
相关问题 更多 >
编程相关推荐