Сохранение размеров среза из массива Numpy 3d - PullRequest
8 голосов
/ 14 апреля 2010

У меня есть 3d-массив, a, форма скажет a.shape = (10, 10, 10)

При нарезке размеры равны squeezed автоматически, т.е.

a[:,:,5].shape = (10, 10)

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

a[:,:,5].shape = (10, 10, 1)

Я думал о повторном приведении массива и передаче ndmin, но это просто добавляет дополнительные измерения к началу кортежа формы независимо от того, откуда взялся срез в массиве a.

1 Ответ

12 голосов
/ 14 апреля 2010
a[:,:,[5]].shape
# (10,10,1)

a[:,:,5] является примером базовой нарезки .

a[:,:,[5]] является примером индексации целочисленного массива - в сочетании с базовой секцией . При использовании индексации целочисленных массивов результирующая форма всегда "идентична (широковещательным) фигурам индексного массива" . Поскольку [5] (в виде массива) имеет форму (1,), a[:,:,[5]] заканчивается тем, что имеет форму (10,10,1).

...