Сортировка массива, срез и обратный возврат пуст - PullRequest
0 голосов
/ 25 октября 2018

У меня есть массив, отсортированный по последнему столбцу, где я хочу использовать / показать 3 верхние отсортированные строки.

Работает нарезка и работает обратное 2-е измерение (2-й пример).Однако, когда я хочу изменить 1-е измерение (3-й пример), я получаю пустой отпечаток.

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

Вероятно, действительно очевидно, чего мне не хватает ...

arr = np.array ([[8, 2, 4, 6],
                 [8, 3, 1, 8],
                 [3, 7, 6, 1],
                 [9, 4, 2, 4],
                 [4, 7, 5, 8],
                 [1, 9, 3, 5],
                 [1, 3, 9, 111],
                 [3, 6, 7, 111],
                 [2, 8, 2, 111],
                 [4, 5, 9, 3]])

print(arr[0:10,:])
print("###")

# Sort by column 4, then by column 3
lexsorted_index = np.lexsort((arr[:, 2], arr[:, 3])) 
a = arr[lexsorted_index]

print(a[0:10:1,::]) #0-10th row each step, all columns
print("###")
print(a[0:10:1,::-1]) #0-10th row each step, all columns reversed

print("###")
print(a[0:3:-1,::]) #0-3rd row reversed, all columns 

1 Ответ

0 голосов
/ 25 октября 2018

Синтаксис фрагмента Python - start:stop:step, а не low:high:step.Если ваш шаг обратного отсчета, начало - это верхняя конечная точка, а не нижняя конечная точка.

Кроме того, срезы включают начало и исключение стопа, а не низкое включение и исключение высокого уровня, так что если вы хотитепервые 3 строки, ваше начальное значение должно быть 2 вместо 3, а ваше стоп-значение должно быть просто опущено, чтобы нарезать как можно дальше (потому что -1 не означает, что вы хотите).

print(a[2::-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...