因为您想要的数据可能无法表示为原始的跨步视图,所以您必须使用高级索引来提取您想要的坐标。
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
, yi
, zi
(所以在这种情况下,因为xi
is (100, 1, 1), yi
is (1, 100, 1), zi
is (100, 100, 25 ) ),输出将是 (100, 100, 25))。
xi
然后, Numpy 使用yi
和的相应元素(通过广播)填充该数组zi
,这样newarray[i, j, k] = oldarray[xi[i, 0, 0], yi[0, j, 0], zi[i, j, k]]