[在此处输入图片描述][1]我有一个我从文件中读取的数组
如图所示。
我想按顺序排列,我检查每个数组的最小数字是index0,最大数字是index2,其余两个数字是index2,index3;
所以这应该应用于我从文件中读取的所有数据。 请帮我一个好的答案。当我尝试这样做时,将每行视为索引。我不知道如何将每个元素放在一行中。因为我的计划是根据index0中的最小元素和index1中的最大元素进行排序,但这里显示为index0是一个完整的行。
例如,我想要像这样输出
['0','1','0.42673399999999995', '0.76885199999999998']
['0.76885200000000031','2','0.87031900000000029','1']
['0.8703189999999994','3','1.3058599999999998','2']
答案 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>