根据用户选择重新排列数组

时间:2017-05-09 20:19:15

标签: python arrays sorting

[在此处输入图片描述][1]我有一个我从文件中读取的数组

example of which I have in my array

如图所示。

  1. 我想按顺序排列,我检查每个数组的最小数字是index0,最大数字是index2,其余两个数字是index2,index3;

  2. 所以这应该应用于我从文件中读取的所有数据。 请帮我一个好的答案。当我尝试这样做时,将每行视为索引。我不知道如何将每个元素放在一行中。因为我的计划是根据index0中的最小元素和index1中的最大元素进行排序,但这里显示为index0是一个完整的行。

  3. 例如,我想要像这样输出

    ['0','1','0.42673399999999995', '0.76885199999999998']
    ['0.76885200000000031','2','0.87031900000000029','1'] 
    ['0.8703189999999994','3','1.3058599999999998','2'] 
    

1 个答案:

答案 0 :(得分:0)

我先排序,然后得到最小的元素,最大的元素,然后把它们放在后面。 所以,根据你的数据:

import numpy

a = [[0, 0.42673399999999995, 1, 0.76885199999999998], 
    [1, 0.76885200000000031, 2, 0.87031900000000029], 
    [2, 0.8703189999999994, 3, 1.3058599999999998]]

a = numpy.sort(a, axis=1)
a = numpy.hstack((a[:,0][:,None], a[:,-1][:,None], a[:,1:-1]))

print a

输出:

[[ 0.        1.        0.426734  0.768852]
 [ 0.768852  2.        0.870319  1.      ]
 [ 0.870319  3.        1.30586   2.      ]]

编辑读取CSV文件的版本:

import numpy

a = []
filename = open( "doc.csv" )
for line in filename.readlines():
    a.append(line.strip().split(","))
a = numpy.sort(a, axis=1)
a = numpy.hstack((a[:,0][:,None], a[:,-1][:,None], a[:,1:-1]))

print a

新输出:

[['0' '1' '0.42673399999999995' '0.76885199999999998']
 ['0.76885200000000031' '2' '0.87031900000000029' '1']
 ['0.8703189999999994' '3' '1.3058599999999998' '2']]

请检查您的CSV文件末尾是否有空白行(如果您有,但无法更改CSV文件,可以通过在a.append(...)之前添加条件来修复此问题<) / p>