繁体   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