【问题标题】:Argsort returns negative values in reverse orderArgsort 以相反的顺序返回负值
【发布时间】:2016-06-02 12:02:43
【问题描述】:

所以我有一个二维数组,其中第一列由介于-1.01.0 之间的浮点数组成。我想根据第一列对数组进行排序,从最低到最高,这样:

data[0,data[0,:].argsort()]

但问题是负值从高到低排序,所以-0.26-0.56之前,而正值从低到高排序,例如0.260.56之前。

为什么会发生这种情况,我怎样才能得到正确的结果,即负值也是从最小值到最大值列出的?

【问题讨论】:

  • data 的第一列是data[:, 0],而不是data[0, :]
  • 对不起,我指的是行,而不是列。不影响问题
  • 你的数组的 dtype 是什么?
  • numpy.ndarray
  • 我指的是dtype,你可以通过data.dtype获取。

标签: python arrays sorting


【解决方案1】:

你的数组是一个字符串数组,所以你需要先把它转换成浮点数组:

data = data.astype(float)
data[0,data[0,:].argsort()]

【讨论】:

  • 啊,一个愚蠢的问题的简单解决方案。谢谢,我忘了整个数组只有一种类型!
  • 在我的情况下,原因是不同的整数类型(int64 vs int16)
猜你喜欢
  • 2017-10-30
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
相关资源
最近更新 更多