2013-04-26 280 views
12

我有一個簡單的,具有隨機數的一維Python數組。我想要做的是將其轉換爲特定形狀的numpy矩陣。我現在的嘗試是這樣的:將1D數組轉換爲numpy矩陣

randomWeights = [] 
for i in range(80): 
    randomWeights.append(random.uniform(-1, 1)) 
W = np.mat(randomWeights) 
W.reshape(8,10) 

不幸的是它始終會形式的矩陣:

[random1,random2,random3,...]]

因此,只有第一個元素一維的使用和重塑命令沒有效果。有沒有辦法將1D數組轉換爲矩陣,以便前x個項目是矩陣的第1行,下一個x項目是第2行,以此類推?

基本上,這將是預期的形狀:

[[1, 2, 3, 4, 5, 6, 7, 8], 
[9, 10, 11, ... , 16], 
[...,    800]] 

我想我可以隨時手動通過輸入陣列解析建立所需形式一個新的矩陣。但我想知道是否有更簡單,更具有內置函數的eleganz解決方案,我沒有看到。如果我必須手動構建這些矩陣,那麼我將在代碼的其他領域中進行大量額外的工作,因爲我的所有源數據都來自簡單的一維數組,但將作爲矩陣進行計算。

回答

18

reshape()不到位重塑,您需要分配結果:

>>> W = W.reshape(8,10) 
>>> W.shape 
(8,10)