Python 向量表示matlab与numpy

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,

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

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中会更糟!:)