我想在不改变数字位置的情况下对一个 numpy 数组进行排名。我可以使用下面的 numpy 函数来做到这一点,但它也一直在对“NaN”值进行排名,我怎样才能让它忽略它们而只对实数值进行排名。任何帮助深表感谢!谢谢!
这是我的代码:
import numpy as np
hr=[]
for line in open('file.txt' ,'r'):
hr.append(line.strip().split('\t'))
tf=[]
for i in range(1,len(hr)):
print hr[i][1:13]
tf.append(hr[i][1:13])
for rows in range(0,len(tf)):
array = np.array([tf[rows]],dtype(float))
print array
order = array.argsort()
ranks = order.argsort()
print ranks
在这里,每个数组行都来自 tf:
array=['NaN', '20', '383.333', 'NaN', 'NaN', 'NaN', '5', '100', '129', '122.5', 'NaN', 'NaN']
期望的输出:
ranks=array['NaN', 1, 5, 'NaN', 'NaN', 'NaN', 0, 2, 4, 3, 'NaN', 'NaN']
上面代码的实际输出:
ranks=array([ 6, 3, 4, 7, 8, 9, 5, 0, 2, 1, 10, 11])
我是 python 新手,所以任何帮助表示赞赏!