2017-01-03 6 views
-2

Ich habe eine Matrix X und eine Liste centres. Ich möchte eine neue numpy Matrix td_X erstellen.Transform Liste in numpy Matrix

Ich möchte td_X mit dem, der sich aus den Zeilen von X besteht, wo der Index gleich Zentren ist. In Pseudocode:

for each in centers: 
    td_X.append(X[eacj]) 

Wie kann ich das mit Python tun?

+1

Haben Sie überhaupt etwas versucht ??? sogar 'np.array (x)' ??? –

Antwort

2

Da die mittlere Dimension Größe 1, nur neu zu gestalten oder sie quetschen.

x = np.array(alist) 
x = np.squeeze(x) # or 
x = x.reshape(45, 5785) # or 
x = x[:,0,:] 

Sie können die Extraschicht nisten in der Liste entfernen, aber diese Art der Umbildung ist so viel einfacher, mit Arrays.

1

Von x[0] haben Sie eine zusätzliche Ebene der Liste umwickelt. Entfernen sie durch Indizierung sollten Sie es bekommen:

x = np.array([l[0] for l in x]) 

Hier ein kleines Beispiel ist:

x = [[[1,2]], [[2,3]], [[4,5]]] 

np.array(x).shape 
# (3, 1, 2) 

np.array([l[0] for l in x]).shape 
# (3, 2) 

np.array([l[0] for l in x]) 
# array([[1, 2], 
#  [2, 3], 
#  [4, 5]]) 
+0

Dies erzeugt immer noch ein Array mit den Dimensionen: '(45, 1, 5785)' – user7347576

+0

Haben Sie das Ergebnis wieder 'x' zugewiesen? – Psidom

+0

Nein zu einer anderen Variablen. – user7347576