2

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

考虑以下简单函数:

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)是标量,则此方法有效。

这样做的方法是什么?有吗?

4

1 回答 1

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 和 xy 按预期工作。

现在你的函数也可以正常工作了。

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]))
于 2013-11-03T06:44:20.483 回答