Вопрос

Это заставило меня почесать голову на некоторое время. Я непреднамеренно нарезал массив с помощью None и получил что-то, кроме ошибки (я ожидал ошибки). Вместо этого он возвращает массив с дополнительным измерением.

>>> import numpy
>>> a = numpy.arange(4).reshape(2,2)
>>> a
array([[0, 1],
       [2, 3]])
>>> a[None]
array([[[0, 1],
        [2, 3]]])

Является ли это поведение преднамеренным или побочным? Если умышленно, есть ли какое-то обоснование для этого?

Это было полезно?

Решение

Использование None эквивалентно использованию numpy.newaxis , так что да, это намеренно. На самом деле это одно и то же, но, конечно, newaxis объясняет это лучше.

Документы :

  

Объект newaxis можно использовать во всех операциях нарезки, чтобы создать ось длины один. newaxis - это псевдоним для & # 8216; None & # 8167; и & # 8216; None & # 8217; может использоваться вместо этого с тем же результатом.

Схожий вопрос SO .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top