【问题标题】:Rearranging array based on user choice根据用户选择重新排列数组
【发布时间】:2017-05-09 20:19:15
【问题描述】:

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

如图所示。

  1. 我想按顺序排列它,我检查每个数组,将最小数字放在 index0 中,将最大数字放在 index2 中,其余两个数字放在 index2、index3 中;

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

例如我想要这样的输出

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

【问题讨论】:

  • 第一行,从 0
  • 欢迎来到stackoverflow。请,你能提供一些你的具体问题的代码。这证明了您尝试了多远,它将帮助其他成员更好地理解您的问题,当时,您将向他们提供您的问题的背景。请检查以下链接:stackoverflow.com/help/mcvestackoverflow.com/help/how-to-ask

标签: python arrays sorting


【解决方案1】:

我先排序,然后得到最小的元素,最大的元素放在后面。 因此,根据您的数据:

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(...) 之前添加一个条件来解决此问题)

【讨论】:

  • 我得到这个错误 - a.sort(axis, kind, order) ValueError: axis(=1) out of bounds
  • @sana 您能否在您的问题中提供 a 的确切格式?我想我们没有完全相同的格式
  • 感谢您的回复。但是对于我为文件读取的任何数组,它是否会改变 index0 处的最小数字和 index1 中的最大数字?
  • 我不明白你的最后一个问题。它不会改变任何数字,因为它们只是排序然后交换。我的输出只是不同,因为它是浮点数而不是字符串,但代码的工作方式相同。
  • 非常感谢。没想到我的问题这么快就解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 2020-02-21
  • 2014-11-29
  • 2016-07-26
  • 1970-01-01
相关资源
最近更新 更多