目的のデータはおそらく元のデータのストライドビューとして表現できないため、高度なインデックスを使用して目的の座標を引き出す必要があります。
c = np.r_[:100]
xi = c.reshape((100, 1, 1))
yi = c.reshape((1, 100, 1))
zi = np.empty((100, 100, 25), dtype=int)
for x in xrange(100):
for y in xrange(100):
zi[x,y] = np.arange(x*25/100, x*25/100+25) # or whatever other function
newarray = oldarray[xi, yi, zi]
oldarray
numpy配列を使用してxi
スライスするとyi
、zi
高度なインデックス作成がトリガーされます。Numpyは、ブロードキャストxi
によって形成されたものと同じ形状の新しい配列を作成します(したがって、この場合、は(100、1、1)、は(1、100、1 )、は( 100、100、25 )です。 )、出力は(100、100、25))になります。yi
zi
xi
yi
zi
次に、Numpyはxi
、yi
およびzi
(ブロードキャストを使用)の対応する要素を使用してその配列を埋めます。newarray[i, j, k] = oldarray[xi[i, 0, 0], yi[0, j, 0], zi[i, j, k]]