假设我有两个三维矩阵,如下所示(摘自Matlab示例http://www.mathworks.com/help/matlab/ref/dot.html):
A = cat(3,[1 1;1 1],[2 3;4 5],[6 7;8 9])
B = cat(3,[2 2;2 2],[10 11;12 13],[14 15; 16 17])
如果我想在第三个维度上进行成对点积,我可以在matlab中这样做:
C = dot(A,B,3)
这将得到以下结果:
C =
106 140
178 220
有没有numpy中的等效操作,最好是矢量化选项,避免编写双重循环处理整个数组。我无法理解 np.tensordot
或 np.inner
的作用,但它们可能是选择。
n x n
矩阵,一般情况是什么? - StankalankA,B
的? - gg349A,B
大小不正确。在 Matlab 代码中,数组的形状为2,2,3
,而您的形状为3,2,2
,需要更改程序的所有逻辑。 - gg349tensordot
是最慢的。我实际上避免使用 Einstein 求和,因为我认为它会很慢。 - CT Zhudiag
的调用导致速度变慢。显然,我本来期望inner1d
更快,但它甚至没有文档,或者至少我找不到它的文档。 - gg349