Как сдвинуть весь массив NumPy, с переносом - PullRequest
0 голосов
/ 26 ноября 2018

Не знаю, как лучше всего озаглавить этот вопрос, но в целом я хотел бы сгенерировать новый массив numpy, основанный на существующем массиве.Единственное отличие состоит в том, что значения были смещены в указанный мной индекс.Также предположим, что требуется перенос(0,1), это будет:

[[2,0,1],
 [5,3,4],
 [8,6,7]]

Если я хочу, чтобы первый элемент был перемещен в (2,2), это будет:

[[4,5,3],
 [7,8,6],
 [1,2,0]]

1 Ответ

0 голосов
/ 26 ноября 2018

Использование numpy.roll .Например, для первого вывода вы можете свернуть 1 указатель вправо, то есть вдоль оси 1:

import numpy as np
x = np.array([[0,1,2], [3,4,5], [6,7,8]])
x_shifted = np.roll(x, shift=1, axis=1)

Из-за коммутативности вы можете дважды (один раз по каждому измерению) для двунаправленной циклической перестановкиЭффект:

x_double_shifted = np.roll(np.roll(x, shift=2, axis=1), shift=2, axis=0)

Очевидно, что можно сделать более "красиво"; -)
Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...