numpy.ndarray.T和numpy.ndarray.transpose()在self.ndim < 2时有什么区别?

29 投票
2 回答
23043 浏览
提问于 2025-04-16 06:23

文档 numpy.ndarray.T 里提到:

ndarray.T — 和 self.transpose() 一样,不过如果 self 的维度小于 2,就直接返回 self。

另外,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]

2 个回答

9

看起来 .T 只是一个方便的写法,而 .transpose(*axes) 是一个更通用的函数,目的是提供更多的灵活性,因为你可以指定轴(axes)。显然,这些功能在Python中并没有实现,所以如果想了解更多,就得去查看C语言的代码了。

26

无论数组的维度是什么,.T 属性和 .transpose() 方法都是一样的——它们都会返回数组的转置。

对于一维数组来说,.T.transpose() 不会有任何变化——它们都会返回原来的数组。

撰写回答