Python numpy函数的力输出形状

Python numpy函数的力输出形状,python,numpy,Python,Numpy,我有一个函数,它将2个numpy数组作为输入并返回一个数字(实函数比下面的示例复杂得多): def_func(x,y): 返回np.sum(x)*np.sum(y) 到目前为止,一切顺利 但是 >>> the_func([[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]) 441 而不是预期的[36225] 因此,我尝试将初始函数矢量化: vfunc = np.vectorize(the_func) 但是 如何使该函数以我希望看到的形状返回结果(在最后

我有一个函数,它将2个numpy数组作为输入并返回一个数字(实函数比下面的示例复杂得多):

def_func(x,y):
返回np.sum(x)*np.sum(y)
到目前为止,一切顺利

但是

>>> the_func([[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]])
441
而不是预期的
[36225]

因此,我尝试将初始函数
矢量化

vfunc = np.vectorize(the_func)
但是


如何使该函数以我希望看到的形状返回结果(在最后一个示例中,
[36225]
=
[(1+2+3)*(1+2+3),(4+5+6)*(4+5+6)]
)?

您应该使用
关键字参数来指定它应该和的维度。在您的示例中,将函数更改为:

def the_func(x,y): 
    return np.sum(x, axis=1)*np.sum(y, axis=1)

在示例输入上运行它会得到结果
[36 255]

duh。在我的实际函数中没有考虑数组的新形状。谢谢,不用担心!如果答案解决了您的问题,请将其标记为可接受的解决方案:)是的,等待能够做到这一点
vectorize
将标量值从输入数组传递到您的函数。您的输入都是(2,3)(转换为数组时),因此输出也是(2,3)。实际上,
函数(1,1)
函数(2,2)
等等。而且,
矢量化
不会加快代码的速度(与直接迭代相比)。是的,在这种情况下,并没有试图加快速度,只是优雅地为循环编写多个,而不是只做一个循环<代码>[vfunc(x,y)代表x,y在zip(a,b)]是的,如果你是对的,我可以把所有东西都压缩。我的实际代码有点复杂,我最终修改了函数以考虑形状,而不是多次调用函数
>>> vfunc([[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]])
array([[ 1,  4,  9],
       [16, 25, 36]])

def the_func(x,y): 
    return np.sum(x, axis=1)*np.sum(y, axis=1)