将3d * 2d逐元素相乘

时间:2018-11-28 16:13:59

标签: python numpy

您好,我正在尝试对一系列系数进行加权。

有没有一种方法可以逃脱for并迅速做到?

for i in range(0, shape.mbn[2])
    mbn_eq[:,:,i] = mbn[:,:,i] .* coeff_n;

mbn_eq是图像m * n * i的一系列,coeff_n是系数矩阵

比方说mbn

{[1,1], [1,1];
[2,2], [2,2];}

这将是coeff_n矩阵

{[1,2], [3,4]}

所以我想要的结果是

{[1,2], [3,4];
[2,4], [6,8]}

1 个答案:

答案 0 :(得分:2)

使用numpy数组,它们在幕后支持broadcasting

import numpy as np 

mbn = np.array([[1,1],[1,1],[2,2],[2,2]])
mbn = mbn.reshape(2,2,2)
print(mbn)
print(mbn.shape)
coeff = np.array([[1,2], [3,4]])

print(mbn * coeff)