从文件中读取两列列表并进行排序

时间:2016-02-25 16:10:15

标签: python

我有一个包含两列浮动的文件,想要对它们进行排序。 我的代码到目前为止

import numpy as np
csv = np.genfromtxt ('test.dat')
#print csv
new = sorted(csv, key=lambda x: x[0])
print new

print csv yield

[  2.54931641e+00   9.27734375e+00]
[  2.52001953e+00   1.01318359e+01]
[  2.56884766e+00   9.76562500e+00]
[  2.57617188e+00   1.07421875e+01]
.....

但打印新产量

[array([ -2.59960938, -12.57324219]), array([ -2.59960938, -12.6953125 ]), array([ -2.59960938, -12.81738281]), array([
-2.59960938, -12.81738281]), array([ -2.59960938, -14.03808594]), array([ -2.59716797, -13.91601562]), array([ -2.594726
56, -15.38085938]), array([ -2.59472656, -13.18359375]), array([ -2.59228516, -12.57324219]), array([ -2.58984375, -12.9
3945312]), array([ -2.58740234, -16.11328125]), array([ -2.58740234, -12.57324219]), array([ -2.58496094, -15.25878906])

这个新输出对我来说是不可处理的。是否有一种方法可以使列表在排序之前看起来像(但正在排序,ofc)

修改 我测试了两个给定的解决方案

new1 = sorted(csv.tolist(), key=lambda x: x[0])

new2 = np.sort(csv, axis=0)

并且结果相反。为了进一步测试代码,我编写了一个测试文件

1   33
2   44
4   55
3   66
3   88
5   99
-4  111
17  22
4   77

这给了我

print new1[0]
>>>[-4.0, 111.0]
print new2[0]
>>>[ -4. 22.]

new2工作不正常,但为什么?

2 个答案:

答案 0 :(得分:1)

如果您想获取列表列表而不是array个对象列表,可以尝试传递排序csv作为列表,如下所示: new = sorted(csv.tolist(), key=lambda x: x[0])

答案 1 :(得分:1)

sorted是一个返回列表的内置Python函数。您正在寻找np.sort

new = np.sort(csv, axis=0)