np.argsort 排除零值 [英] np.argsort which excludes zero values

查看:66
本文介绍了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 中使用 pandasnumpy 实现它?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆