我想知道矢量化是否可以同时应用于两个矢量输入......
考虑以下简单功能:
def f(x,y):
return(x+y,x-y)
我想提供这样的函数,两个向量x=arange(3)
和y=arange(4,6)
。
我的直觉是定义a,b=f(x,y)
,但python告诉我these operators could not be broadcast with shapes (3) (2)
。显然,如果y
(或x
)是标量,则此方法有效。
这样做的方法是什么?有吗?
答案 0 :(得分:1)
如果向量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]))