2017-05-09 81 views
-1

重新排列阵列[输入图像的描述在这里][1]我有我从文件基于用户选择

example of which I have in my array

像这样读为图中所示的阵列。

  1. 我想,我检查每个阵列放置在索引0最少数量和索引2数量最多,在索引2,INDEX3其余两个号码给它安排的顺序;

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

例如,我想这样的

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

第一行,自0 <0.42之后的第一个元素不应该是0.42而不是0.42? – Nuageux

+0

欢迎使用stackoverflow。请,你能提供一些你的具体问题的代码吗?这可以证明你尝试了多远,它会帮助其他成员更好地理解你的问题,当时,你会给他们一个你的问题的背景。请检查这些链接:https://stackoverflow.com/help/mcve和https://stackoverflow.com/help/how-to-ask –

回答

0

输出I排序第一,然后得到最小的元素,规模最大,把其余的后面。 因此,根据您的数据:

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(...)之前添加一个条件来修复)

+0

我得到这个错误 - a.sort(axis,kind,order) ValueError:axis(= 1)越界 – sana

+0

@sana你能否在你的问题中提供** a **的确切格式?我想我们没有完全相同的格式 – Nuageux

+0

感谢您的回复。但是,它改变了索引0处的最小数字和索引1中的最大数字,无论我为文件读取哪个数组? – sana