【问题标题】:Multipy numpy 3 dim array by 2d array将 numpy 3 dim 数组乘以 2d 数组
【发布时间】:2021-05-06 10:21:10
【问题描述】:

我有两个矩阵,m0.shape = [10, 3, 3] 和 m1.shape = [10, 3]。我想要做的是使用循环以这种方式完成:

m0 = np.zeros((10, 3, 3))
m1 = np.zeros((10, 3))
a = np.zeros((10, 3))
for i in range(10):
    a += m1 @ m0[i]

问题是:我可以通过使用内置的 numpy 操作以某种方式达到相同的结果吗?

【问题讨论】:

  • 只要 m1 @ m0 就可以了
  • m1 @ m0 给shape = [10, 10, 3]
  • 然后求和(axis=0)

标签: python arrays numpy linear-algebra


【解决方案1】:

我认为你有两个选择:

import numpy as np

np.sum(m1 @ m0, axis=0)

或使用numpy.einsum

np.einsum('ij,kjl->il', m1, m0)

【讨论】:

  • 是一样的吗?如果m1 是 (8,3) 形状怎么办?
  • @hpaulj 我认为等式应该成立,输出形状为 (8,3)。我错过了什么?
  • 我在想dot 广播维度的方式。
  • 在乘法之前可以将总和应用于m0:m1@(m0.sum(axis=0))
猜你喜欢
  • 1970-01-01
  • 2015-11-14
  • 2021-01-28
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-19
相关资源
最近更新 更多