![](/img/trans.png)
[英]Finding first non-zero value along axis of a sorted two dimensional numpy array
[英]Finding largest indices of non-zero elements along each axis
我有一個3D numpy數組。 我想沿着數組的三個軸分別找到非零元素元素的最大x
, y
和z
坐標。 我怎樣才能做到這一點?
因此,對於下面的示例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.