向量与numpy中Tensor的乘积

js5cn81o  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(153)

我尝试用numpy优化一些代码。目前我有以下代码:

for i in range(0,bodies):
    delta_y = b@(k[:,i,:])
    delta_y *= dx
    y[i] += delta_y
return y

其中B的形状为(5,),k的形状为(5,3,4),有没有办法用numpy乘法代替for循环,我已经尝试了很多方法,但都不能解决这个问题。
目前我正在尝试:

B = np.repeat([b], y.shape[0], axis = 0)
delta_y= B.T@k
delta_y*= dx
y = delta_y

得到的是(5,5,4)形而不是(4,)形。

bvuwiixz

bvuwiixz1#

多亏了Hpaulj,我想出了一个解决办法:

delta_y = np.matmul(b,k.transpose(1,0,2))*dx
y +=delta_y
return y

以防将来有人能用:)

相关问题