gpt4 book ai didi

python - 查找二维数组每列的最后一个非零值的索引

转载 作者:行者123 更新时间:2023-12-04 07:31:14 30 4
gpt4 key购买 nike

给定一个二维数组,x ,我想在每列中找到最底部的非零元素的索引。例如,如果

x = np.array([[1, 2, 3, 4],
[1, 5, 0, 1],
[1, 0, 0, 1],
[0, 0, 0, 0]])
结果应该是 [2, 1, 0, 2] .
一种明显的方法是
 [col.nonzero()[0].max() for col in x.T]
但是,我有点担心上述在性能方面可能不是最佳的。有没有更有效的方法来做到这一点?

最佳答案

Numpy 不提供直接执行此操作的方法( np.argminnp.argmax 查找第一次出现而不是最后一次)。因此,需要一个技巧。
事情是找到每列的最后一个非零值类似于在翻转列时找到每列的第一个非零值。
这是一个使用 np.argmin 的实现找到第一个:

(x.shape[0]-1) - np.argmax(x[::-1,:]!=0, axis=0)
您应该确保每列至少有一个非零值才能获得良好的结果。

关于python - 查找二维数组每列的最后一个非零值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67921398/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com