2009-06-03 36 views
73

Trong một NumPy có thể sử dụng đối tượng 'newaxis' trong cú pháp cắt để tạo ra một trục dài một, ví dụ:Numpy: Tôi có nên sử dụng newaxis hoặc Không?

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

Các documentation states rằng người ta cũng có thể sử dụng None thay vì newaxis, hiệu quả là chính xác tương tự.

Có bất kỳ lý do nào để chọn cái khác không? Có bất kỳ tùy chọn chung hoặc hướng dẫn phong cách nào không? Ấn tượng của tôi là newaxis phổ biến hơn, có thể vì nó rõ ràng hơn. Vì vậy, có bất kỳ lý do tại sao None được cho phép?

Trả lời

84

None được phép vì numpy.newaxis chỉ là bí danh cho None.

In [1]: import numpy 

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

Các tác giả có thể chọn nó bởi vì họ cần một hằng thuận tiện, và None đã có sẵn.

Đối với lý do tại sao bạn nên chọn newaxis qua None: chủ yếu là vì nó rõ ràng hơn, và một phần vì một ngày nào đó các numpy tác giả có thể thay đổi nó thành một cái gì đó khác hơn None. (Họ không có kế hoạch, và có lẽ sẽ không, nhưng không có lý do chính đáng để thích None.)

+0

Cảm ơn, tôi đã không nhận thấy rằng np.newaxis thực sự là Không. Tôi sẽ đi với newaxis sau đó. – nikow

+4

Họ thực sự nói rằng bạn có thể sử dụng None, vì vậy, họ không thể thay đổi nó ngay bây giờ: "Đối tượng newaxis có thể được sử dụng trong cú pháp slicing cơ bản được thảo luận ở trên. Không ai cũng có thể được sử dụng thay cho newaxis." – endolith

+2

Không có gì ngắn hơn nữa :) – David

Các vấn đề liên quan