Pythoni c способ индексации без потери размеров - PullRequest
1 голос
/ 14 января 2020
data = np.zeros((5, 16, 16))

Я хотел бы получить доступ к срезу размера 1 этого numpy массива данных. Может быть полезно определить, что я не хочу:

>>> data[2].shape
(16, 16)

Вместо этого я хочу сохранить размерность такой же. Здесь на ум приходит несколько способов:

>>> np.expand_dims(data[2], 0).shape
(1, 16, 16)

>>> data[2:3].shape
(1, 16, 16)

>>> data[None, 2].shape
(1, 16, 16)

Какой из этих вариантов больше pythoni c, или здесь есть лучшее решение?

1 Ответ

1 голос
/ 14 января 2020

Вы также можете сделать это с помощью списка индексов с одним элементом:

>>> data[[2]].shape
(1, 16, 16)

Что касается того, что больше pythoni c, то есть больше основано на мнении, чем что-либо.


Примечание : этот метод создает копию данных вместо представления в одни и те же данные, поскольку произвольные индексы могут не привести к непрерывному представлению. Это подробно объясняется в вопросе Избегайте копирования при индексации массивов numpy с использованием списков

...