Срез массива NumPy с использованием None
Вопрос
Это заставило меня почесать голову на некоторое время. Я непреднамеренно нарезал массив с помощью 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; может использоваться вместо этого с тем же результатом.