用python中的numpy对100x100数组进行排序
我有一个数组,大小为100x100,随机数从1到20。我得把桌子按行分类。我已尝试使用此命令:用python中的numpy对100x100数组进行排序,python,arrays,python-3.x,numpy,sorting,Python,Arrays,Python 3.x,Numpy,Sorting,我有一个数组,大小为100x100,随机数从1到20。我得把桌子按行分类。我已尝试使用此命令: def shedule(self): a=self.arr a.sort() print(self.arr) 但结果显示此序列中的数字(第一行): 因为元素是字符串而不是整数,所以需要使用self.arr=self.arr.astype('int32')将元素转换为整数,然后可以执行self.arr.sort(axis=1) 你有两个问题。首先是字符串而不是数字,第二个数组是
def shedule(self):
a=self.arr
a.sort()
print(self.arr)
但结果显示此序列中的数字(第一行):
因为元素是字符串而不是整数,所以需要使用
self.arr=self.arr.astype('int32')
将元素转换为整数,然后可以执行self.arr.sort(axis=1)
你有两个问题。首先是字符串而不是数字,第二个数组是二维的,换句话说就是2轴,所以你必须指定你想要触摸的轴,我相信这里你说的是列,轴=1。
请记住尺寸基本上是长度,不能有100*100;这就是形状
arr.sort(axis=1)
是这些字符串而不是int。由于您的排序看起来像是已完成的字符串排序,而不是数字排序。我做到了,知道我的方法是这样的:def schedule(self):a=self.arr self.arr=self.arr.astype('int32')a.sort(axis=1)print(self.arr)
但我的结果是随机的` 81561128171768151919131313595920661616161811129192012019201281815151616161616161616161618146141414141414141414141414141414121821826161616161616161616151515151031318181818181818181818181818181818181818181818181818181818181818181818115'。当我打印(a)not arr时,我得到了与以前相同的结果。不幸的是,没有,新的reply@BartoszSochacki检查我的编辑,您正在使用a
和self.arr
之间切换。这似乎是类的一部分,如果您想永久更改它,那么您应该在self.arr
上执行您的操作。如果您只想打印它而不更改它,那么使用a=self.arr
并将我的示例中的所有self.arr
更改为a
好的,它可以工作。非常感谢,我一天都不能处理这个问题。
['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']]
def shedule(self):
self.arr = self.arr.astype('int32')
self.arr.sort(axis=1)
print(self.arr)