我最近從Matlab/Octave切換到SciPy/NumPy,我喜歡它。但是我發現有時候我會因爲細微的差異而感到困惑。在NumPy中,np.array([1,2,3,4,5])與np.array([[1],[2],[3],[4],[5]])不同嗎?
在Matlab中,當我們聲明尺寸5的「行向量」,那麼我們使用下面的命令:
x = [1, 2, 3 ,4, 5] % in matlab
如下所示
該矢量的大小可以使用「size
」命令來檢查:
size(x)
ans =
1 5
我曾以爲,在與NumPy下面是做同樣的事情如上。
x = np.array([1, 2, 3, 4, 5]) # in NumPy
但是大小有點奇怪。
>>> np.shape(x)
(5,)
大小並不(5, 1)
,但它是(5,)
。這究竟意味着什麼?我不太清楚爲什麼這個元組的第二個元素是空的。
我檢查下列返回(5,1)
y = np.array([[1], [2], [3], [4], [5]])
np.shape(y)
(5, 1)
然後,是 「Y」 中的相同NumPy的 「X」?我認爲它不是。我可能會誤解某些東西,但是有沒有人可以在這個話題上給我啓發?
謝謝!
在MATLAB中的矩陣具有至少2個尺寸(年前它有完全相同2)。在numpy中,一個數組可以有任何數字 - 0,1,2等。另一個重要的區別 - MATLAB'pads'數組尺寸在最後,因此是'(5,1)'形狀。 numpy在開始時添加它們 - 如果需要的話。 – hpaulj
感謝您的評論!但我認爲MATLAB在結尾「填充」數組維度並不是真的。正如你所提到的,在Matlab中,一個矩陣具有二維,並且一個向量被假定爲一個特殊類型的維數爲N×1或1×N的矩陣。所以一個行向量的大小變爲[1,N ]。如果它是列向量,則大小變爲[N,1]。 – chanwcom
如果我要求「第10」維度,那麼告訴我'1':'size(1:10,10)'沒有問題。 – hpaulj