如何理解这一结果新罕布什尔(kij,A)?

2024-10-04 05:28:01 发布

您现在位置:Python中文网/ 问答频道 /正文

例如

A = np.arange(24).reshape((2, 3, 4))
print np.einsum('ijk', A)

这仍然没有问题。在

但是如果我做了print np.einsum('kij', A),形状就是(3, 4, 2)。是不是应该是(4, 2, 3)?在

print np.einsum('cab', A)形状的结果是(4, 2, 3)也没有问题。为什么print np.einsum('kij', A)不一样?在


Tags: np形状printcabarangereshapeeinsumijk
1条回答
网友
1楼 · 发布于 2024-10-04 05:28:01

如果只指定一组下标,则这些下标将解释为输入数组中相对于输出的维度顺序,反之亦然。在

例如:

import numpy as np

A = np.arange(24).reshape((2, 3, 4))
B = np.einsum('kij', A)

i, j, k = np.indices(B.shape)

print(np.all(B[i, j, k] == A[k, i, j]))
# True

正如@hpaulj在评论中指出的,通过指定两组下标,可以使输入和输出维度之间的对应关系更加明确:

^{pr2}$

相关问题 更多 >