【发布时间】:2025-11-29 07:15:01
【问题描述】:
例如,我得到了形状为 (3,2,2) 的矩阵 A,例如
[
[[1,1],[1,1]],
[[2,2],[2,2]],
[[3,3],[3,3]]
]
和形状为 (2,2) 的矩阵 B,例如
[[1, 1], [0,1]]
我想实现形状为 (3,2,2) 的 c,例如:
c = np.zeros((3,2,2))
for i in range(len(A)):
c[i] = np.dot(B, A[i,:,:])
这给了
[[[2. 2.]
[1. 1.]]
[[4. 4.]
[2. 2.]]
[[6. 6.]
[3. 3.]]]
实现这一目标的最有效方法是什么?
谢谢。
【问题讨论】:
-
np.tensordot(A,B,axes=((2),(1))) 给出 [[[2 1] [2 1]] [[4 2], [4 2] ] [[6 3] [6 3]]],这与预期的不同。请问在我的情况下正确的方法应该是什么?
-
A 和 B 的典型形状是什么?各种方法的性能取决于它们。
-
A 的形状为 (n, 2, 2),其中 n 可以相当大。 B 的形状总是 (2, 2)。请问哪种方法比较好?