やりたいこと
88500 の np.int_ の ndarray があります。
これを、8*8 の行列が500個並んでいると解釈して、次のように抽出したいと考えています。
- 500個の行列の中から欲しい行列を取り出す
- 88 の行列は、1要素おきに抽出して 44 の行列にする
これを numpy の関数の連鎖でできないかと思っています。
やってみたこと
Python
1import numpy as np 2 3rng = np.random.default_rng() 4a = np.reshape(rng.integers(8*8*500), [8, 8, 500]) 5 6a[:, :, 50].take([0, 2, 4, 6], axis=0).take([1, 3, 5, 7], axis=0)
これでどうやら 51番めの行列を取り出して、その要素をひとつ置きに間引くことができているようです。ところが
Python
1a.take([10,30,50], axis=2).take([0, 2, 4, 6], axis=0).take([1, 3, 5, 7], axis=0)
としても、11番目、31番目、51番目の行列が並ぶ形になりません。
問題
- 500個の行列の中から欲しい行列を複数取り出す
- 88 の行列は、1要素おきに抽出して 44 の行列にする
というのを実現するにはどうすればよいでしょうか。
なるべく cupy とかに持っていっても効率的な形がよいのですが。
回答1件
あなたの回答
tips
プレビュー