numpy.mgrid
「座標インデックス配列」を生成するために使用します
y, x = np.mgrid[0:3, 0:2]
print x
array([[0, 1],
[0, 1],
[0, 1]])
多くの場合、これらの配列(たとえばx[0, :]
)をスライスして、残りのデータを破棄します。場合によっては、これらのスライスは元の配列よりもはるかに小さく、計算にコストがかかります(つまりnp.mgrid[0:512, 0:512, 0:512]
)。numpyは、[coord[view] for coord in np.mgrid[0:512, 0:512, 0:512]
大きな中間配列を生成しないのと同等のものを提供しますか?
解決策はスライスにとって些細なこと[0,:]
だと思いますが、numpy配列にインデックスを付けるための有効な方法を処理する一般的な解決策を探しています
編集
一部の人は、どのview
ように見えるかについて具体的な例を求めています。理想的には、ndarrayにインデックスを付けるための有効な方法を処理する一般的なソリューションを望んでいます。上記の3x2アレイの具体例を次に示します。
1)view = (1, slice(None, None, 2))
2)view = (np.array([0,1]), np.array([0, 1]))
3)view = np.array([[False, False], [False, True], [False, False]])
そして、私は次のような関数を探しています
def mgrid_with_view(array_shape, view)
...
[o[view] for o in np.indices(array_shape)]
これは、不要な計算やメモリなしで同等のものを返します。