私はこの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)を返します。ビックリ&戸惑います!