我有一个 MxN Numpy 数组。我想取数组的每一行并将其逐元素乘以数组的每一行,从而产生一个 MxMxN numpy 数组。le_input = np.array([ [0, 0, 1], [0, 1, 0]])le_expected_output = np.array([ [ [0, 0, 1], [0, 0, 0] ], [ [0, 0, 0], [0, 1, 0] ]])我当然可以用 for 循环来做到这一点,我已经尝试过了,但我假设在 Numpy 中有一种更快的方法来做到这一点。有没有人有任何想法?
1 回答

慕运维8079593
TA贡献1876条经验 获得超5个赞
您可以使用np.einsum:
np.einsum('ik,jk->ijk', le_input, le_input)
# array([[[0, 0, 1],
# [0, 0, 0]],
# [[0, 0, 0],
# [0, 1, 0]]])
或者创建一个新轴并使用数组的广播属性来计算第一维上的外积:
le_input[:,None] * le_input
# array([[[0, 0, 1],
# [0, 0, 0]],
# [[0, 0, 0],
# [0, 1, 0]]])
添加回答
举报
0/150
提交
取消