Как уменьшить форму numpy.ndarray?

#python-3.x #numpy #numpy-ndarray

#python-3.x #numpy #numpy-ndarray

Вопрос:

У меня есть R <class ‘numpy.ndarray’> формы (30,30,30). Как получить форму (30,30,29), пожалуйста?

 R[:-1]
  

выдает (29,30,30)

 R[::-1]
  

выдает снова (30,30,30), почему?

Ответ №1:

Вы должны указать все оси, которые есть в массиве. Сделайте что-то вроде:

 R[:,:,:-1]
  

Объяснение для этого таково: берем все элементы на первой оси, также берем все для второй и берем все, кроме последнего, для 3-й оси.
Причина, по которой ваши два варианта неверны, заключается в:

  • Первый элемент просто ссылается на первую ось.
  • Второй, если вы ставите : два раза, он ссылается на [start: stop:step]. Опуская start и stop, он принимает полную длину массива. При добавлении -1 к шагу порядок массива меняется на обратный, но опять же только по первой оси.