簡體   English   中英

在每個軸上查找非零元素的最大索引

[英]Finding largest indices of non-zero elements along each axis

我有一個3D numpy數組。 我想沿着數組的三個軸分別找到非零元素元素的最大xyz坐標。 我怎樣才能做到這一點?

因此,對於下面的示例x = 1,y = 2,z = 1

array([[[1, 1, 0],
        [1, 1, 0],
        [0, 0, 0]],

       [[0, 0, 0],
        [1, 0, 0],
        [1, 0, 0]],

       [[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]]])

獲取非零元素的索引與np.nonzero並與列堆疊起來np.column_stack ,最終會找到max沿着列用.max(0) 實現看起來像這樣-

np.column_stack((np.nonzero(A))).max(0)

看起來好像有一個內置函數np.argwhere用於獲取堆疊在2D數組中的所有非零元素的索引。 因此,您可以簡單地-

np.argwhere(A).max(0)

樣品運行-

In [50]: A
Out[50]: 
array([[[1, 1, 0],
        [1, 1, 0],
        [0, 0, 0]],

       [[0, 0, 0],
        [1, 0, 0],
        [1, 0, 0]],

       [[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]]])

In [51]: np.column_stack((np.nonzero(A))).max(0)
Out[51]: array([1, 2, 1])

In [52]: np.argwhere(A).max(0)
Out[52]: array([1, 2, 1])

使用numpy.nonzero完成

>>> tuple(coords.max() for coords in numpy.nonzero(A))
(1, 2, 1)

暫無
暫無

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

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