在整数的一部分之后对二维数组进行排序

时间:2018-09-16 21:20:29

标签: python python-3.x sorting

我正在尝试按最后一个条目(尤其是整数的最后两个字符)对二维Numpy数组进行排序。我已经可以做的就是按照最后一个数字对数组进行排序。

import numpy as np


a = np.array([[2,2,2,10006], [2,2,2,18015], [2,2,2,12002], [2,2,2,14005]])
print( a[a[:, 3].argsort()] )

但是,问题是出现以下情况:

[[    2     2     2 10006]
 [    2     2     2 12002]
 [    2     2     2 14005]
 [    2     2     2 18015]]

但是我想拥有的是(02、05、06、15->整数的最后2个字符):

 [[    2     2     2 12002]
  [    2     2     2 14005]
  [    2     2     2 10006]
  [    2     2     2 18015]]

现在到了令人兴奋的部分,整个过程已经完成了很多条目,当然我希望它超级快,所以我认为我应该在不转换为字符串,切分和用自己的算法排序。不知何故,我完全不知道这个非常特殊的问题。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

import numpy as np

a = np.array([[7,8,9,10006],
              [10,11,12,18015],
              [1,2,3,12002],
              [4,5,6,14005]])

# extract the absolute value of the number modulus 100
# to get the two trailing digits
print(np.mod(a[:, 3], 100))

# you could directly replace them in the array
a[:, 3] = np.mod(a[:, 3], 100)


print(a[a[:, 3].argsort()])