Срез массива NumPy с использованием None - PullRequest
37 голосов
/ 11 сентября 2009

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

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

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

1 Ответ

37 голосов
/ 11 сентября 2009

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

Документы :

Объект newaxis может использоваться во всех операциях нарезки для создания оси длины один. newaxis - это псевдоним «Нет», и вместо него можно использовать «Нет» с тем же результатом.

Смежный вопрос SO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...