【问题标题】:Difference between numpy's np.transpose(matrix) and np.matrix.transpose() on a 2D matrix?numpy 的 np.transpose(matrix) 和 np.matrix.transpose() 在二维矩阵上的区别?
【发布时间】:2019-03-02 10:42:14
【问题描述】:

numpy 的 np.transpose(matrix) 和 np.matrix.transpose() 在 2D 矩阵上是否存在功能差异,如果两者都没有指定轴?

另外,有人可以尝试直观地解释轴规范的工作原理吗?

谢谢!

【问题讨论】:

  • 暂时远离 np.matrix。它只会让你感到困惑

标签: python numpy matrix numpy-ndarray


【解决方案1】:
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 的直觉。

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    相关资源
    最近更新 更多