【问题标题】:vector representation matlab vs numpy矢量表示 matlab vs numpy
【发布时间】:2018-01-21 08:00:00
【问题描述】:

我必须在 MATLAB 和 NumPy (Python 3.x) 之间切换。总是给我带来问题的是 NumPy 中向量的使用方式。在 MATLAB 中,向量或多或少只是一个 1xn 或 nx1 矩阵。举个例子:

b=np.array([0,2])

是一个 (2,) 数组,实际上它对任何矩阵运算都没有用,因为在这种情况下,我必须先执行 b.reshape(2,1) 之类的操作。几乎在任何时候,我都必须重塑函数返回的向量/数组。有人能告诉我为什么 NumPy 数组默认不被视为列或行向量吗?而且因为我必须经常这样做……重塑是最好的方法吗?

【问题讨论】:

  • 如果我需要一个 (n,1) 数组,我通常使用b[:, None]。 numpy 通常将 (n,) 数组视为 (1,n),即如果需要,它会在开始时添加新的暗淡。 Matlab 在另一端消耗 dims。

标签: python matlab numpy


【解决方案1】:

恕我直言,Numpy 的基于数组的语法比 Matlab 的基于线性代数的语法更加灵活方便。在大多数情况下,numpy 代码会更干净,更容易编写/遵循。当您执行 simple 线性代数运算时会出现仅有的少数例外情况,而 Matlab 的语法 稍微 更有效。

请注意,在大多数情况下,您不需要 reshape numpy 数组来模拟 matlab 的操作。例如A.dot(b) 或A@b (python 3) 其中A 是一个矩阵(二维numpy.array)与Matlab 中的A*b 基本相同。给自己一些时间来熟悉 numpy,你会发现是 Matlab “强迫”你过度使用/滥用 reshape 函数,而不是 numpy。

【讨论】:

  • 我希望这是真的,但要跟踪切片是一场噩梦。
  • @percusse 这可能是真的。但是,我相信这个噩梦在matlab中会更糟! :)
猜你喜欢
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
相关资源
最近更新 更多