如何对numpy中下面提到的循环进行矢量化?

如何对numpy中下面提到的循环进行矢量化?,numpy,vectorization,Numpy,Vectorization,如何矢量化以下代码?我已经研究过广播,但我无法找到将以下代码矢量化的方法: for k in range(m): b[k] = b[k,:] + c[k] 其中,b是一个(2,3,4)大小的数组,c是一个(1,2)大小的数组,m是一个固定整数???从您的代码来看,c似乎是一个1D数组。现在,要沿b的第一个轴添加c的元素,需要通过在轴=(1,2)处添加两个单体维度(或NumPy术语中的新轴)来创建ca3D数组,然后执行非常需要的添加。这将使矢量化的应用发挥作用。因此,实施将是- b +=

如何矢量化以下代码?我已经研究过广播,但我无法找到将以下代码矢量化的方法:

for k in range(m):
    b[k] = b[k,:] + c[k]

其中,
b
是一个(2,3,4)大小的数组,
c
是一个(1,2)大小的数组,
m
是一个固定整数???

从您的代码来看,
c
似乎是一个
1D
数组。现在,要沿
b
的第一个轴添加
c
的元素,需要通过在
轴=(1,2)
处添加两个单体维度(或NumPy术语中的新轴)来创建
c
a
3D
数组,然后执行非常需要的添加。这将使矢量化的应用发挥作用。因此,实施将是-

b += c[:,None,None]
b += c.T[:,None]
如果
c
确实是
(1,2)
形状的数组,那么解决方案将是-

b += c[:,None,None]
b += c.T[:,None]