Python 用2d数组迭代调用多变量函数

Python 用2d数组迭代调用多变量函数,python,performance,numpy,iteration,Python,Performance,Numpy,Iteration,有没有更有效的方法来调用这样的函数: def func(x,y): # do something here 当传递的参数是这样的数组时 X = np.random.rand(5) Y = np.random.rand(5,25) 我在此表格中使用列表理解: res = np.array([[func(x,y) for x in X] for y in Y]) 但是我想知道我是否可以在numpy中找到一些更快的方法,以避免发生“引擎盖下”循环。不太可能(np.vectorize可以,

有没有更有效的方法来调用这样的函数:

def func(x,y):
    # do something here
当传递的参数是这样的数组时

X = np.random.rand(5)
Y = np.random.rand(5,25)
我在此表格中使用列表理解:

res = np.array([[func(x,y) for x in X] for y in Y])

但是我想知道我是否可以在numpy中找到一些更快的方法,以避免发生“引擎盖下”循环。

不太可能(
np.vectorize
可以,但速度不快,或者可能有一点点),您应该首先更改函数。说清楚。。。也就是说,如果可能的话,函数应该一次作用于所有数组,这取决于函数在这里是什么。让函数接受一个数组并遍历它是否足以重新定义函数,以便接受数组作为参数,然后遍历(可能以与以前类似的方式,即通过列表理解)函数内部?是否更快?是否可以矢量化函数取决于函数是否尝试使用数组参数按原样调用函数?它可以在不做任何更改的情况下正常工作——这取决于函数中执行的操作类型。