如何对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
a3D
数组,然后执行非常需要的添加。这将使矢量化的应用发挥作用。因此,实施将是-
b += c[:,None,None]
b += c.T[:,None]
如果c
确实是(1,2)
形状的数组,那么解决方案将是-
b += c[:,None,None]
b += c.T[:,None]