Numpy : newaxis 또는 None을 사용해야합니까?


91

numpy에서는 슬라이싱 구문에서 'newaxis'객체를 사용하여 길이가 1 인 축을 만들 수 있습니다. 예 :

import numpy as np
print np.zeros((3,5))[:,np.newaxis,:].shape
# shape will be (3,1,5)

문서 상태 일도 사용할 수있는 None대신은 newaxis, 효과는 정확히 동일합니다.

하나를 선택해야하는 이유가 있습니까? 일반적인 선호 사항이나 스타일 가이드가 있습니까? 내 인상은 그것이 newaxis더 대중적이라는 것입니다. 아마도 더 명시 적이기 때문일 것입니다. None허용되는 이유 가 있습니까?

답변:


103

Nonenumpy.newaxis의 별칭 일 뿐이 므로 허용 됩니다 None.

In [1]: import numpy

In [2]: numpy.newaxis is None
Out[2]: True

저자는 편리한 상수가 필요하고 사용 가능했기 때문에 아마도 그것을 선택했을 것입니다 None.

당신이 선호해야하는 이유에 대해서는 newaxis이상 None: 더 명시 적 때문에 주로 그것은, 그리고 부분적으로 언젠가 때문에 numpy저자는 이외로 변경 될 수 있습니다 None. (그들은 계획을 세우지 않았고 아마도 그렇게하지 않을 것입니다. 그러나 None. 을 선호 할 타당한 이유는 없습니다 .)


감사합니다. np.newaxis가 실제로 None이라는 것을 알지 못했습니다. 그럼 나는 newaxis로 갈 것입니다.
nikow

7
하지만 실제로 None을 사용할 수 있다고 말하고 있으므로 지금은 변경할 수 없습니다. "newaxis 개체는 위에서 설명한 기본 슬라이싱 구문에서 사용할 수 있습니다. newaxis 대신 None을 사용할 수도 있습니다."
endolith 2012-06-05

5
또한 numpy 인덱싱의 세부 사항에 익숙하지 않은 사람들과 함께 작업하면 "None"에 의해 역 참조 된 배열을 볼 때 미친 것처럼 보입니다
Peter

1
None더 나은 곳 중 하나 는 실행 속도를 최적화하는 것입니다. 매우 작은 시간 이점을 제공 할 수 있습니다. 그러나 일반적으로 np.newaxis.
godaygo

2
왜 그들이 사용하지 않았는지 newaxis = object()(또는 C 레벨에 상응하는 것)은 저를 넘어서 ... 사용 None하는 것은 오류가 발생하기 쉽습니다. 버그가있는 함수 ( return부울 배열을 반환해야하는 베어) 가 있었고 모양 불일치로 인해 오류가 발생하기 시작했습니다. 인덱싱이 None단순히 IndexError. 그들은 오류의 감각을 만들려고 노력의 30 분을 피할했던 I는 "신선한"센티넬 값 ... 사용했다면
자코모 Alzetta
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.