假設我創建了一個2維數組形陣列蟒
m = np.random.normal(0, 1, size=(1000, 2))
q = np.zeros(shape=(1000,1))
print m[:,0] -q
當我拿m[:,0].shape
我得到(1000,)
,而不是(1000,1)
這是我想要的。我如何強制m[:,0]
到(1000,1)
陣列?
假設我創建了一個2維數組形陣列蟒
m = np.random.normal(0, 1, size=(1000, 2))
q = np.zeros(shape=(1000,1))
print m[:,0] -q
當我拿m[:,0].shape
我得到(1000,)
,而不是(1000,1)
這是我想要的。我如何強制m[:,0]
到(1000,1)
陣列?
通過特別選擇第0列,因爲你已經注意到了,你降維:
>>> m = np.random.normal(0, 1, size=(5, 2))
>>> m[:,0].shape
(5,)
你有很多的選擇,得到一個5X1的對象回來。您可以索引使用列表,而不是一個整數:
>>> m[:, [0]].shape
(5, 1)
你可以要求「所有列直到但不包括1」:
>>> m[:,:1].shape
(5, 1)
或者你可以使用None
(或np.newaxis
),這是一個普遍的把戲延長尺寸:
>>> m[:,0,None].shape
(5, 1)
>>> m[:,0][:,None].shape
(5, 1)
>>> m[:,0, None, None].shape
(5, 1, 1)
最後,你可以重塑:
>>> m[:,0].reshape(5,1).shape
(5, 1)
但我會用這種情況下的其他方法之一。
我只想要一個1000行的列向量,因爲我試圖減去兩列向量 – lord12 2013-03-27 20:16:33
我認爲'(1000,)'和'(1000,1)' – MattDMo 2013-03-27 20:19:40
@MattDMo是一樣的:他們有時候因爲廣播的工作原理可以互換,但它們並不完全相同。 – DSM 2013-03-27 20:20:38