Python 向量表示matlab与numpy
我必须在MATLAB和NumPy(Python3.x)之间切换。总是给我带来问题的是向量在NumPy中的使用方式。在MATLAB中,向量或多或少只是一个1xn或nx1矩阵。举个例子:Python 向量表示matlab与numpy,python,matlab,numpy,Python,Matlab,Numpy,我必须在MATLAB和NumPy(Python3.x)之间切换。总是给我带来问题的是向量在NumPy中的使用方式。在MATLAB中,向量或多或少只是一个1xn或nx1矩阵。举个例子: b=np.array([0,2]) 是一个(2,)数组,事实上,它对于任何矩阵运算都没有用处,因为在这种情况下,我必须先做一些类似于b的事情。几乎在任何时候,我都必须重塑函数返回的向量/数组。有人能告诉我为什么默认情况下NumPy数组不被视为列向量或行向量吗?因为我必须经常这样做……重塑是最好的方式吗 IMHO,
b=np.array([0,2])
是一个(2,)数组,事实上,它对于任何矩阵运算都没有用处,因为在这种情况下,我必须先做一些类似于
b的事情。几乎在任何时候,我都必须重塑函数返回的向量/数组。有人能告诉我为什么默认情况下NumPy数组不被视为列向量或行向量吗?因为我必须经常这样做……重塑是最好的方式吗 IMHO,Numpy基于数组的语法比Matlab基于线性代数的语法灵活方便得多。在大多数情况下,numpy代码将更干净,更易于编写/遵循。在执行简单的线性代数运算时,只有少数例外情况会出现,而Matlab的语法稍微有效一些
请注意,在大多数情况下,为了模拟matlab的操作,您不需要重塑
numpy数组。例如A.dot(b)
或A@b
(python 3),其中A
是一个矩阵(二维numpy.array
),本质上与Matlab中的A*b
相同。给自己一些时间熟悉numpy,你会发现是Matlab“强迫”你过度使用/滥用重塑
函数,而不是numpy。如果我需要(n,1)数组,我通常使用b[:,None]
numpy
通常将(n,)数组视为(1,n),也就是说,如果需要,它会在开始时添加新的DIM。Matlab在另一端扩展了dims。我希望这是真的,但切片是一场噩梦,需要跟踪。@percusse可能是真的。然而,我相信这个噩梦在matlab中会更糟!:)