#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)
.