Подтвердить что ты не робот

Какая разница в numpy.ndarray.T и numpy.ndarray.transpose(), когда self.ndim <2

В документе numpy.ndarray.T говорится

ndarray.T - То же, что и self.transpose(), за исключением того, что self возвращается, если self.ndim < 2.

Кроме того, ndarray.transpose(* axes) говорит

Для одномерного массива это не влияет.

Разве это не означает одно и то же?

Вот небольшой фрагмент демо:

>>> 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]
4b9b3361

Ответ 1

Независимо от ранга, атрибут .T и метод .transpose() одинаков - оба они возвращают транспонирование массива.

В случае массива ранга 1 .T и .transpose() ничего не делают - оба возвращают массив.

Ответ 2

Похоже, что .T - просто удобная нотация, а .transpose(*axes) - более общая функция и предназначена для большей гибкости, поскольку осями можно указать. Они, по-видимому, не реализованы в Python, поэтому вам нужно будет изучить код C, чтобы проверить это.