我遇到了这个 python 代码(它有效),对我来说这似乎很神奇。但是,我无法弄清楚这段代码在做什么。为了复制它,我写了一个测试代码:
import numpy as np
# Create a random array which represent the 6 unique coeff.
# of a symmetric 3x3 matrix
x = np.random.rand(10, 10, 6)
所以,我有 100 个对称的 3x3 矩阵,我只存储唯一的组件。现在,我想生成完整的 3x3 矩阵,这就是魔法发生的地方。
indices = np.array([[0, 1, 3],
[1, 2, 4],
[3, 4, 5]])
我明白这是在做什么。这就是 0-5 索引分量应如何排列在 3x3 矩阵中以具有对称矩阵。
mat = x[..., indices]
这条线让我迷路了。因此,它正在处理 x 数组的最后一个维度,但我完全不清楚重新排列和整形是如何完成的,但这确实返回了一个形状为 (10、10、3、3) 的数组。我很惊讶也很困惑!