我想知道是否可以同时将向量化应用于两个向量输入...
考虑以下简单函数:
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]))
