2013-04-26 22 views
12

Ich habe ein einfaches, eindimensionales Python-Array mit Zufallszahlen. Was ich tun möchte ist, es in eine numple Matrix einer bestimmten Form zu konvertieren. Mein aktueller Versuch sieht wie folgt aus:Konvertieren 1D-Array in numpy Matrix

[[random1, random2, Random3, ...]]

So nur das erste Element:

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

Leider ist es immer eine Matrix der Form erzeugt einer Dimension wird verwendet und der Umformbefehl hat keine Auswirkung. Gibt es eine Möglichkeit, das 1D-Array in eine Matrix zu konvertieren, so dass die ersten x Elemente Zeile 1 der Matrix sind, die nächsten x Elemente Zeile 2 und so weiter? Grundsätzlich

Dies wäre die beabsichtigte Form:

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

Ich glaube, ich kann immer eine neue Matrix in der gewünschten Form manuell durch Parsen durch den Eingangs-Array aufzubauen. Aber ich würde gerne wissen, ob es eine einfachere, elegantere Lösung mit eingebauten Funktionen gibt, die ich nicht sehe. Wenn ich diese Matrizen manuell erstellen muss, habe ich eine Menge zusätzlicher Arbeit in anderen Bereichen des Codes, da alle meine Quelldaten in einfachen 1D-Arrays vorliegen, aber als Matrizen berechnet werden.

Antwort

18

reshape() nicht an Ort und Stelle nicht neu zu gestalten, müssen Sie das Ergebnis zuzuweisen:

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