我想排列一個numpy數組而不會改變數字位置。 我能夠使用下面的numpy函數來做到這一點,但它也保持對'NaN'值的排名,我怎樣才能讓它忽略它們,而只是將實數值排序。任何幫助深表感謝! 謝謝!在python中排列數組,同時忽略缺失值
這是我的代碼:
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所以任何幫助表示讚賞!
+1的正確使用蒙面陣列... –