2010-11-01 13 views
12

Tài liệu numpy.ndarray.T nóisự khác biệt của numpy.ndarray.T và numpy.ndarray.transpose() khi self.ndim <2

ndarray.T là gì - Tương tự như self.transpose(), ngoại trừ việc tự được trả về nếu self.ndim < 2.

Ngoài ra, ndarray.transpose (* trục) nói

Đối với một mảng 1 chiều, điều này không có tác dụng.

Điều này không có nghĩa là giống nhau không?

Dưới đây là một đoạn giới thiệu chút:

>>> import numpy as np 
>>> print np.__version__ 
1.5.1rc1 
>>> a = np.arange(7) 
>>> print a, a.T, a.transpose() 
[0 1 2 3 4 5 6] [0 1 2 3 4 5 6] [0 1 2 3 4 5 6] 
+2

Không có sự khác biệt hiệu quả (cả hai đều trả về lượt xem thành mảng ban đầu). Trong thực tế, tài liệu xuất hiện (?) Là sai về 'ndarray.T' ...' self' dường như không được trả về. Nói cách khác, 'x không phải là x.T', ngay cả khi nó là mảng 1D. (Các nội dung giống nhau, nhưng nó trả về một đối tượng mới với một lần xem vào cùng một nội dung mỗi lần). –

+0

@Joe Kington, cảm ơn thông tin. – lotrpy

Trả lời

13

Bất kể cấp bậc, các .T thuộc tính và các phương pháp .transpose() đều giống nhau-họ cả hai trở lại transpose của mảng.

Trong trường hợp mảng xếp hạng 1, .T.transpose() không làm bất kỳ điều gì — cả hai đều trả về mảng.

+0

Tôi đoán điều gì có nghĩa là '.T' và' transpose() '_call_ đều trả về chuyển vị của mảng. Trong thực tế, '.T' trả về transpose của mảng, trong khi' transpose' là một _more general_ method_ có thể được gán cho các trục ('transpose (* axes)', với các giá trị mặc định làm cho lệnh 'transpose()' tương đương với '.T'). – EOL

5

Có vẻ như .T chỉ là một ký hiệu thuận tiện và rằng .transpose(*axes) là hàm tổng quát hơn và được thiết kế để mang lại sự linh hoạt hơn vì trục có thể được chỉ định. Chúng dường như không được thực hiện bằng Python, vì vậy người ta sẽ phải xem xét mã C để kiểm tra điều này.

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