Python:使用NaN对数组进行排序

用户名

注意:我正在使用Python和numpy数组。

我有很多都有两列和多行的数组。第二列中有一些NaN值;第一列只有数字。

我想根据第二列以升序对每个数组进行排序,而忽略了NaN值。这是一个很大的数据集,因此我宁愿不必将NaN值转换为零或其他值。

我想要这样排序:

105.  4.
22.   10.
104.  26.
...
...
...
53.   520.
745.  902.
184.  nan
19.   nan

首先,我尝试使用fix_invalid它将NaN转换为1x10^20

#data.txt has one of the arrays with 2 columns and a bunch of rows.
Data_0_30 = array(genfromtxt(fname='data.txt'))

g = open("iblah.txt", "a") #saves to file

def Sorted_i_M_W(mass):
    masked = ma.fix_invalid(mass)
    print  >> g, array(sorted(masked, key=itemgetter(1)))

Sorted_i_M_W(Data_0_30)

g.close()

或者我将函数替换为如下形式:

def Sorted_i_M_W(mass):
    sortedmass = sorted( mass, key=itemgetter(1))
    print  >> g, array(sortedmass)

对于每次尝试,我都会得到类似以下内容:

...
[  4.46800000e+03   1.61472200e+11]
[  3.72700000e+03   1.74166300e+11]
[  4.91800000e+03   1.75502300e+11]
[  6.43500000e+03              nan]
[  3.95520000e+04   8.38907500e+09]
[  3.63750000e+04   1.27625700e+10]
[  2.08810000e+04   1.28578500e+10]
...

在NaN值所在的位置,重新开始排序。

(对于fix_invalid上面摘录中的NaN,显示一个1.00000000e+20值)。但我希望排序完全忽略NaN值。

用我想要的方式对数组进行排序的最简单方法是什么?

不知道是否可以使用完成此操作numpy.sort,但是您可以确定使用numpy.argsort

>>> arr
array([[ 105.,    4.],
       [  53.,  520.],
       [ 745.,  902.],
       [  19.,   nan],
       [ 184.,   nan],
       [  22.,   10.],
       [ 104.,   26.]])
>>> arr[np.argsort(arr[:,1])]
array([[ 105.,    4.],
       [  22.,   10.],
       [ 104.,   26.],
       [  53.,  520.],
       [ 745.,  902.],
       [  19.,   nan],
       [ 184.,   nan]])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript 使用 splice() 对数组进行排序导致 NaN

来自分类Dev

Python-使用特定元素对数组进行排序

来自分类Dev

在Python中对数组数组进行排序

来自分类Dev

Python按模板对数组进行排序

来自分类Dev

Swift:使用NSRange对数组进行排序

来自分类Dev

使用HTML标签对数组进行排序

来自分类Dev

使用模板对数组进行排序

来自分类Dev

如何使用PHP对数组进行排序

来自分类Dev

使用HTML标签对数组进行排序

来自分类Dev

使用中位数对数组进行排序

来自分类Dev

使用javascript对数组表进行排序

来自分类Dev

使用 compareTo 方法对数组进行排序

来自分类Dev

使用 Powershell 对数组值进行排序

来自分类Dev

使用快速排序使用指针对数组进行排序

来自分类Dev

使用排序功能按NSDates对数组进行排序

来自分类Dev

使用插入排序对数组进行排序

来自分类Dev

使用合并排序对数组进行排序

来自分类Dev

在 Ruby 中使用冒泡排序对数组进行排序

来自分类Dev

使用预定义的排序顺序对数组进行排序

来自分类Dev

使用通用键对数组内的数组进行排序

来自分类Dev

在使用options_for_select的同时对数组的数组进行排序

来自分类Dev

使用AngularJS对数组中的子数组进行排序

来自分类Dev

使用其他数组对数组对象进行排序

来自分类Dev

列对数组进行排序?

来自分类Dev

如何对数组进行排序

来自分类Dev

以升序对数组进行排序

来自分类Dev

无法对数组进行排序

来自分类Dev

对数组进行两次排序或使用php对数组进行微调

来自分类Dev

使用minHeapify()对数组进行排序,并使用extractMin()返回元素