在Python中矢量化多维操作

在Python中矢量化多维操作,python,numpy,vectorization,Python,Numpy,Vectorization,我想知道矢量化是否可以同时应用于两个矢量输入 考虑以下简单函数: def f(x,y): return(x+y,x-y) 我想给出这样一个函数,两个向量x=arange(3)和y=arange(4,6)。 我的直觉是定义a,b=f(x,y),但python告诉我这些操作符不能与形状(3)(2)一起广播。显然,如果y(或x)是标量,那么这是可行的 怎么做?有吗?如果向量x和y的尺寸相同,这将正常工作。 您具有以下代码设置: In [16]: x=arange(3) In [17]: x

我想知道矢量化是否可以同时应用于两个矢量输入

考虑以下简单函数:

def f(x,y):
    return(x+y,x-y)
我想给出这样一个函数,两个向量
x=arange(3)
y=arange(4,6)
。 我的直觉是定义
a,b=f(x,y)
,但python告诉我
这些操作符不能与形状(3)(2)
一起广播。显然,如果
y
(或
x
)是标量,那么这是可行的


怎么做?有吗?

如果向量x和y的尺寸相同,这将正常工作。 您具有以下代码设置:

In [16]: x=arange(3)

In [17]: x
Out[17]: array([0, 1, 2])

In [18]: y=arange(4,6)

In [19]: y
Out[19]: array([4, 5])
显然,x+y没有定义。因为x有3个实体(维度),y只有2个

考虑一个小小的修改:

In [21]: y=arange(4,7)

In [22]: x+y
Out[22]: array([4, 6, 8])

In [23]: x-y
Out[23]: array([-4, -4, -4])
现在,x+y和x-y按预期工作

现在,您的函数也可以正常工作

In [24]: def f(x,y):
....:     return (x+y,x-y)
....: 

In [25]: f(x,y)
Out[25]: (array([4, 6, 8]), array([-4, -4, -4]))

谢谢你。我应该提到,我确实需要元素操作。所以我给它不一致的矩阵x和y(实际上x和y是'N-by-5-by-5,我想写这篇文章来对每个5-by-5矩阵进行矩阵运算)应该没关系。对于x=arange(3)和y=arange(4,6),你希望得到什么结果?