【问题标题】:Sorting a "1D" ndarray in Python在 Python 中对“一维”ndarray 进行排序
【发布时间】:2014-04-04 19:57:12
【问题描述】:

按照我之前的问题。 我现在有一个 ndarray 的形式:

 [[  0.        ]
 [ 18.21545873]
 [ 14.93752607]
 [ 15.55222205]
 [ 14.93752607]
 [ 10.68406032]
 [ 11.54598659]
 [ 15.55222205]
 [ 11.54598659]
 [ 12.30302814]]
  1. 如何对该数组进行排序?因为它不是一个正常的列表。它是一个ndarray,换句话说,它是一个列表列表。
  2. 人们直接对这个列表列表进行排序是否正常,或者人们通常将其更改为普通列表

    [ 0. , 18.21545873, 14.93752607, 15.55222205, 14.93752607, 10.68406032, 11.54598659, 15.55222205, 11.54598659, 12.30302814]

然后对这个列表进行排序?

非常感谢!

【问题讨论】:

  • 您可以按特定列对 2D numpy 数组进行排序。在您的情况下,这将只是列0。见这里stackoverflow.com/a/2828371/2296458
  • 谢谢@Cyber​​,我刚刚发现了这一点,并申请了我的案子。但是,关于我的第二个问题:通常人们会将这种一维数组视为“一维数组”,还是会将其更改为列表?我们如何将这个一维数组更改为列表?谢谢!
  • 这取决于您的意图。如果您的二维数组在每个数组中只有一个元素,那么您当然只需要一个一维数组。要回答您的另一个问题,您将 numpy 数组转换为列表的方式是:假设您的 numpy 数组是numpyArray,您只需说newList = list(numpyArray)
  • 嗨@Cyber​​,我从newList = list(numpyArray) 得到的是array([0.]), array([18.21545873]), ...。但我的意思是[0., 18.21545873, ...]。我需要为此提出另一个问题吗?
  • 对不起,我的错误,需要更多的咖啡;)说你的 numpy 数组被命名为x,试试这个:[i for i in x[:,0]]

标签: python arrays sorting numpy


【解决方案1】:

没什么复杂的。

l = [[  0.        ],
     [ 18.21545873],
     [ 14.93752607],
     [ 15.55222205],
     [ 14.93752607],
     [ 10.68406032],
     [ 11.54598659],
     [ 15.55222205],
     [ 11.54598659],
     [ 12.30302814]]
l.sort()

产生你想要的。也许我错过了问题所在。

【讨论】:

  • 谢谢!但是当我尝试这个时,我得到了“无”。这与我的一维数组没有“,”作为分隔符的事实有关吗?作为我在原帖中的第二个问题,你知道人们通常使用“ndarrays”或“list of lists”吗?有没有办法将 ndarray 转移到列表中?谢谢!
  • @Murphy sort() 不返回任何内容,所以你不能说newArray = l.sort()。它将在原地对数组l 进行排序,因此如果您在sort() 之后打印l,您会注意到它已被排序。
  • @Murphy,如果要获取返回值,或许可以使用new = sorted(l)
猜你喜欢
  • 2020-03-19
  • 2017-05-25
  • 2013-03-21
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
相关资源
最近更新 更多