Skip to main content
 首页 » 编程设计

python之在 Python 中向量化多维操作

2025年05月04日8JustinYoung

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

考虑以下简单函数:

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]))