numpy在2D矩阵上的np.transpose(matrix)和np.matrix.transpose()之间的区别?

时间:2018-09-26 15:29:02

标签: python numpy matrix numpy-ndarray

在二维矩阵中,如果没有指定轴,则numpy的np.transpose(matrix)和np.matrix.transpose()之间是否存在功能差异?

还有,有人可以尝试直观地解释轴规格如何工作吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

In [16]: np.matrix.transpose
Out[16]: <method 'transpose' of 'numpy.ndarray' objects>

这与np.ndarray.transpose相同。换句话说,transpose子类继承自父np.matrix(我们通常称为np.ndarray数组)是numpy方法。

np.transpose是等效的函数,最终调用了transpose方法。不同之处在于它可以先将其输入转换为数组,例如如果输入是列表。列表当然没有转置方法。

关于它的作用-使用2d数组,它执行通常的数学定义的转置。使其他语言的用户感到困惑的是,它将该概念推广到了1d,3d和更高版本。在使用它时,请确保您了解一维和二维数组之间的区别。如果您不清楚,转置将仍然是一个难题。

转置及其轴参数已在其他SO问题中进行了说明。我建议您在交互式会话旁阅读文档,在该会话中您可以使用各种尺寸的数组。

In [23]: x = np.arange(24).reshape(2,3,4)
In [24]: x.transpose().shape
Out[24]: (4, 3, 2)
In [25]: x.transpose(0,2,1).shape
Out[25]: (2, 4, 3)

不要试图继承MATLAB的直觉。