2017-04-08 5 views
1

Hinzufügen habe ich eine numpy Array, das wie folgt aussieht:ein neues Array zu einem mehrdimensionalen Array in Python

np.array([ 
[23, 12, 4, 103, 87, 0.6], 
[32, 18, 3, 120, 70, 0.6], 
[43, 12, 8, 109, 89, 0.4], 
[20, 13, 7, 111, 77, 0.8] 
]) 

ich dieses Array zu transformieren möchten, wo die letzte Spalte sein eigenes Array wird, so dass es wird sehen wie folgt aus:

np.array([ 
[[23, 12, 4, 103, 87], [0.6]], 
[[32, 18, 3, 120, 70], [0.6]], 
[[43, 12, 8, 109, 89], [0.4]], 
[[20, 13, 7, 111, 77], [0.8]] 
]) 

Was wäre der beste Weg, um darüber zu gehen? Ich bin relativ neu in Python und habe einige Schleifen ausprobiert, aber ohne Erfolg. Vielen Dank!

+0

Es scheint, als was Sie wirklich wollen, ist eine 'Liste', nicht ein' np.array' –

Antwort

1

numpy erfordert konsistente Dimensionen in seiner Anordnung; das würde zwei verschiedene Größen geben. Sie können entweder zwei separate Variablen verwenden (das heißt parallel Arrays):

X = data[:, :-1] 
y = data[:, -1] 

X = np.array([ 
[23, 12, 4, 103, 87], 
[32, 18, 3, 120, 70], 
[43, 12, 8, 109, 89], 
[20, 13, 7, 111, 77], 
]) 


y = np.array([ 
0.6, 0.6, 0.4, 0.8 
]) 

Oder Sie eine Liste von Paaren speichern können:

my_list = [(row[:-1], [row[-1]]) for row in data] 
my_list = [ 
([23, 12, 4, 103, 87], [0.6]), 
([32, 18, 3, 120, 70], [0.6]), 
([43, 12, 8, 109, 89], [0.4]), 
([20, 13, 7, 111, 77], [0.8]) 
] 

Die beste Strategie für Ihren Anwendungsfall abhängt.

+0

Diese Frage ist kein * genaues * Duplikat, also gibt es einige zusätzliche Einblicke, die hier zu finden sind: http: // stackoverflow .com/questions/3386259/how-to-make-a-multidimension-numpy-array-mit-variierender-row-size –

+0

Ich habe versucht, dies zu verwenden, aber es hat nicht die letzte Spalte als eigenes Array gedruckt. Das habe ich: [ ([23, 12, 4, 103, 87], 0,6), ([32, 18, 3, 120, 70], 0,6), ([43, 12, 8 , 109, 89], 0.4), ([20, 13, 7, 111, 77], 0.8) ] – himi64

+0

Achten Sie darauf, die Klammern einzufügen: [row [-1]]. Sie sind kritisch. –

Verwandte Themen