인덱서를 vindex
사용.
In [1]: import dask.array as da
In [2]: import numpy as np
In [3]: x = np.arange(1000).reshape((10, 10, 10))
In [4]: dx = da.from_array(x, chunks=(5, 5, 5))
In [5]: xcoords = [1, 3, 5]
In [6]: ycoords = [2, 4, 6]
In [7]: x[:, xcoords, ycoords]
Out[7]:
array([[ 12, 34, 56],
[112, 134, 156],
[212, 234, 256],
[312, 334, 356],
[412, 434, 456],
[512, 534, 556],
[612, 634, 656],
[712, 734, 756],
[812, 834, 856],
[912, 934, 956]])
In [8]: dx.vindex[:, xcoords, ycoords].compute()
Out[8]:
array([[ 12, 112, 212, 312, 412, 512, 612, 712, 812, 912],
[ 34, 134, 234, 334, 434, 534, 634, 734, 834, 934],
[ 56, 156, 256, 356, 456, 556, 656, 756, 856, 956]])
몇 가지주의 사항 :이 점별 인덱싱하거나 단 하나의 전체 조각 받아
이 없습니다 (아직) NumPy와 배열에서 사용할 수있는, 그러나 제안한다. 제안서 here을 참조하십시오.
새로운 축을 항상 맨 앞에 놓으므로 numpy fancy indexing과 완전히 호환되지 않습니다. 간단한 transpose
하지만 이러한 rearange 수 있습니다
예를 :
In [9]: dx.vindex[:, xcoords, ycoords].T.compute()
Out[9]:
array([[ 12, 34, 56],
[112, 134, 156],
[212, 234, 256],
[312, 334, 356],
[412, 434, 456],
[512, 534, 556],
[612, 634, 656],
[712, 734, 756],
[812, 834, 856],
[912, 934, 956]])