np.argsort 排除零值 [英] np.argsort which excludes zero values
本文介绍了np.argsort 排除零值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个数组 [0.2,0,0,0,0.3,0,0,0,0.4]
.我正在使用 np.argsort
对值进行排序并获取索引.
I have an array [0.2,0,0,0,0.3,0,0,0,0.4]
. I'm using np.argsort
to sort values and get that indexes.
因此,对于我的示例,它将类似于 [1,5,9,2,3,4,6...]
.但是,我只想为非零值获取索引数组.
So, for my example, it will be something like [1,5,9,2,3,4,6...]
. However, I would like to get array of indexes only for non zero values.
在我的例子中只有 [1,5,9]
.
如何在 python 中使用 pandas
和 numpy
实现它?
How do I implement it in python with pandas
and numpy
?
推荐答案
使用 np.nonzero
和索引技巧
def sparse_argsort(arr):
indices = np.nonzero(arr)[0]
return indices[np.argsort(arr[indices])]
sparse_argsort(a)
array([0, 4, 8])
一个班轮:
(lambda a: (lambda a_, i_: i_[np.argsort(a_[i_])])(a,np.nonzero(a)[0]))(a)
array([0, 4, 8])
这篇关于np.argsort 排除零值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文