【发布时间】:2019-03-02 10:42:14
【问题描述】:
numpy 的 np.transpose(matrix) 和 np.matrix.transpose() 在 2D 矩阵上是否存在功能差异,如果两者都没有指定轴?
另外,有人可以尝试直观地解释轴规范的工作原理吗?
谢谢!
【问题讨论】:
-
暂时远离 np.matrix。它只会让你感到困惑
标签: python numpy matrix numpy-ndarray
numpy 的 np.transpose(matrix) 和 np.matrix.transpose() 在 2D 矩阵上是否存在功能差异,如果两者都没有指定轴?
另外,有人可以尝试直观地解释轴规范的工作原理吗?
谢谢!
【问题讨论】:
标签: python numpy matrix numpy-ndarray
In [16]: np.matrix.transpose
Out[16]: <method 'transpose' of 'numpy.ndarray' objects>
这与np.ndarray.transpose 相同。换言之,np.matrix 子类继承自父 np.ndarray(我们通常称之为 numpy 数组)的 transpose 方法。
np.transpose 是等效的函数,最终调用转置方法。它的不同之处在于它可以先将其输入转换为数组,例如如果输入是一个列表。当然,列表没有转置方法。
至于它的作用 - 对于二维数组,它执行通常的数学定义的转置。让其他语言的用户感到困惑的是,它将概念推广到 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 的直觉。
【讨论】: