2016-10-17 8 views
1

私はnumpyスライスを一般的に書くことができますか?

xとRHSは、サイズの3D numpyのアレイ(T、L、S)です
x[i, :, :] = (rhs[i, :, :]-diag[i] * x[i+1, :, :])/diag[i] 

のような何かをしたいです。 diagはサイズTの1D配列です。

これは適切に放送されます。

しかし、2D配列やその他の次元数でも同様の機能を使いたいと思います。どのようにしてこれを一般的に記述すれば、最初の次元がTの配列でも動作するようになります。関数内にこれらの種類の行がたくさんあるので、コードの重複を避けたい。

+0

あなたは 'T'でもベクトル化したいですか?つまり、これは 'for i in range(T)'ループで起こっていますか? – Eric

+0

軸の数が3であることが保証されていないことを意味しましたか? 1、2、3、...、Nにすることはできますか? – Jeon

答えて

2
x[i] = (rhs[i] - diag[i] * x[i+1])/diag[i] 

これらのコロンは完全に不要です。

+0

素晴らしいです。ありがとう。それがとてもシンプルであることを気づかなかった。 – Dave31415

+1

似たようなことに興味があり、最後の次元に沿って興味があれば、 'x [...、i + 1]'のような省略記号を使うことができます。 – IanH

関連する問題