2017-08-13 57 views
1

我必須在MATLAB和NumPy(Python 3.x)之間切換。總是對我造成問題的是NumPy中使用向量的方式。在MATLAB中,矢量或多或少不是1xn或nx1矩陣。爲了提供一個例子:向量表示matlab vs numpy

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

是(2,)陣列而事實上,因爲在這種情況下我以前做類似b.reshape(2,1)不是任何矩陣運算是有用的。幾乎在任何時候,我都必須重新設計函數返回的向量/數組。有人可以告訴我爲什麼NumPy數組默認情況下不像列或行向量那樣處理?而且因爲我必須經常這樣做......重塑最好的辦法嗎?

+0

如果我需要一個(n,1)數組,我通常使用'b [:,None]'。 'numpy'通常將(n,)數組視爲(1,n),也就是說,如果需要,它會在開始時添加新的模糊。 Matlab在另一端消耗暗淡。 – hpaulj

回答

1

恕我直言,Numpy的基於數組的語法比Matlab的基於線性代數的語法更加靈活方便。在大多數情況下,numpy代碼會更乾淨,易於編寫/遵循。在執行簡單線性代數運算時出現的只有少數例外,其中Matlab的語法是略微效率更高。

請注意,在大多數情況下,您不需要reshape numpy數組來模仿matlab的操作。例如,A.dot(b)[email protected](python 3)其中A是矩陣(2維numpy.array)與Matlab中的A*b基本相同。給自己一些時間來熟悉numpy,你會發現它是Matlab「強制」你過度使用/濫用reshape函數,而不是numpy。

+0

我希望這是真實的,但切片是追蹤的噩夢。 – percusse

+0

@percusse這可能是真的。不過,我相信這個噩夢在matlab中會更糟! :) – Stelios