Сортировка двумерного массива по части целого числа - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь отсортировать 2-мерный массив Numpy по последним записям, особенно по последним 2 символам целого числа.Что я уже могу сделать, так это отсортировать массив по последнему числу.

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 голосов
/ 17 сентября 2018
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()])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...