多次元配列に対する柔軟なイテレータ、具体的には [多次元配列] → 多次元配列 操作が便利に行えるもの…例えばアインシュタインの縮約記法で書いた数式が素直に書き下せるものがほしい。でも添え字に対する演算もできてほしいし…などと色々考えていると、結局はベタに書くのが一番簡単という結論になってしまう。
一つのアプローチとして、 Matlab ライクな多次元配列の扱い (Matlab が起源なのかは知らない) がある。例えば離散フーリエ変換が一行で書けたりする (コードは numpy)。
def dft(xs):
n = len(xs)
return exp((-2.0j * pi / n) * arange(n)[:, newaxis] * arange(n)[newaxis, :]) @ xs
numpy で書くと空間計算量まで O(N^2) になってしまうけれどそれは置いておく。残念ながらこの方法は階数が多くなってきたり、添え字の入れ替えが必要になったりするとかなり辛い。
Backlinks: [201910301]
.