Нарезка для произвольного массива чисел произвольных размеров

#python #arrays #numpy

Вопрос:

Предположим, у меня есть ndarray numpy произвольных размеров, и я хотел бы извлечь первые два фронтальных среза этого массива. Каков наилучший способ действий? Например, если входной массив A 5-мерный, я хочу извлечь[:,:,0:2,1,1]. Аналогично, если он 3-мерный, я хотел бы извлечь[:,:,0:2], и если он 6-мерный, А[:,:,0:2,1,1,1], и т.д…

Комментарии:

1. Я бы использовал следующее: A[(slice(None),)*2 (slice(0,2,1),) (1,)*(A.ndim-3)] . Таким образом, можно использовать код для построения кортежей любого числа индексов, а затем использовать их в индексе. : это только синтаксический сахар для slice(None)

2. Хорошо, это кажется мне приемлемым ответом

3. np.s_ является сокращением для среза, например. np.s_[0:2:1] является сокращением для slice(0,2,1) .