我正在尝试按最后一个条目(尤其是整数的最后两个字符)对二维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]]
现在到了令人兴奋的部分,整个过程已经完成了很多条目,当然我希望它超级快,所以我认为我应该在不转换为字符串,切分和用自己的算法排序。不知何故,我完全不知道这个非常特殊的问题。非常感谢您的帮助!
答案 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()])