【问题标题】:Sort 100x100 array with numpy in python在python中使用numpy对100x100数组进行排序
【发布时间】:2019-12-23 11:28:45
【问题描述】:

我有一个数组,大小为 100x100,随机数从 1 到 20。我必须逐行对表格进行排序。我试过使用这个命令:

def shedule(self):
    a=self.arr
    a.sort()
    print(self.arr)

但结果显示此序列中的数字(第一行):

    ['1' '1' '1' '1' '1' '1' '1' '1' '1' '1' '10' '10' '10' '10' '10' '10'
  '11' '11' '11' '11' '11' '12' '12' '13' '13' '13' '13' '14' '14' '14'
  '14' '15' '16' '16' '16' '16' '16' '17' '17' '17' '17' '17' '18' '18'
  '18' '19' '19' '19' '19' '2' '2' '2' '2' '2' '2' '20' '20' '20' '20'
  '3' '3' '3' '3' '3' '4' '4' '4' '4' '4' '4' '4' '4' '4' '4' '5' '5' '5'
  '5' '6' '6' '6' '6' '6' '6' '6' '6' '7' '7' '7' '7' '8' '8' '9' '9' '9'
  '9' '9' '9' '9' '9']]

【问题讨论】:

  • arr.sort(axis=1)
  • 是这些字符串而不是整数。因为您的排序看起来像是按字符串排序而不是数字排序。

标签: python arrays python-3.x numpy sorting


【解决方案1】:

这是因为您的元素是字符串而不是整数,您需要使用self.arr = self.arr.astype('int32') 将您的元素转换为整数,然后您可以使用self.arr.sort(axis=1)

def shedule(self):
     self.arr = self.arr.astype('int32')
     self.arr.sort(axis=1)
     print(self.arr)

【讨论】:

  • 我做到了,知道我的方法看起来像这样:def shedule(self): a=self.arr self.arr = self.arr.astype('int32') a.sort(axis=1) print(self.arr) 但结果很随机` 8 15 6 6 12 18 17 6 8 15 15 19 13 13 5 9 5 9 20 2 6 2 6 6 16 7 1 9 1 10 11 8 11 12 9 19 20 6 14 15 16 10 2 12 15 16 11 4 11 12 8 6 4 11 14 5 6 13 14 19 4 19 1 14 2 12 18 4 6 6 3 9 16 16 18 4 18 16 2 16 16 5 11 2 15 15 12 15 10 3 9 13 10 3 18 13 2 12 10 15`。当我 print(a) not arr 时,我的结果与以前相同
  • 很遗憾没有,新的回复里会有更多细节
  • @BartoszSochacki 检查我的编辑,您在使用 aself.arr 之间切换,这似乎是课程的一部分,如果您想永久更改它,那么您应该在self.arr 如果只是想打印出来而不是更改它,那么使用a = self.arr 并将我的示例中的所有self.arr 更改为a
  • 好吧,它工作。非常感谢,我一天都无法解决这个问题。
【解决方案2】:

你有两个问题。首先,您有字符串而不是数字,其次您的数组是二维的,换句话说,是 2 轴,因此您必须指定要触摸的轴,我相信您在这里谈论的是列-那将是轴 = 1。 请记住尺寸基本上是长度,不能有100*100;那是形状

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2021-03-23
    相关资源
    最近更新 更多