簡體   English   中英

pythonic根據遮罩從3d數組中提取切片的方法

[英]pythonic way to extract a slice from 3d array according to mask

我有一個MxNxD數組I和一個二進制MxN掩碼M。

假設M中有k 1個。我想要提取一個kxD數組,其中包含與掩碼中的1s對應的所有D長度向量。

我可以通過調用numpy.nonzero()來獲取這些向量的索引,但找不到一種沒有可怕循環的切片的簡便方法。

任何幫助都感激不盡。

我認為這是您想要的:

In [283]: A = np.arange(24).reshape(2,3,4)
In [284]: M = np.array([[1,0,1],[0,1,0]],dtype=bool)
In [285]: A
Out[285]: 
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
In [286]: M
Out[286]: 
array([[ True, False,  True],
       [False,  True, False]])
In [287]: I,J = np.nonzero(M)
In [288]: I,J
Out[288]: (array([0, 0, 1]), array([0, 2, 1]))
In [289]: A[I,J,:]
Out[289]: 
array([[ 0,  1,  2,  3],
       [ 8,  9, 10, 11],
       [16, 17, 18, 19]])

由於M遮蓋了初始尺寸,因此可以簡化為

A[np.nonzero(M)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM