2017-10-16 3 views
0

Ich habe eine sehr große Liste von Listen mit numpy ndarrays wo ich Buchstaben auf einen ganzzahligen Wert zuordnen muss.Ersetzen von Werten in numpy ndarray

Dies ist nach dem, was ich dachte, könnte funktionieren, aber es scheint nicht alle Arrays zu fangen.

import numpy as np 

x = [np.array(['a','b','c']),np.array(['d','e']),np.array(['a','e'])] 
dict_x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e':5} 

x[ x == 'a'] = dict_x.get('a') 

Output: [1, array(['d', 'e'], 
    dtype='<U1'), array(['a', 'e'], 
    dtype='<U1')] 

Ich habe versucht, auch durch alle Schlüssel iterieren sie in der Anordnung einer nach dem anderen mit der folgenden

for i in dict_x.keys(): 
    x[ x == i] = dict_x.get(i) 

aber kehrt zu ersetzen, die ich sinnvoll annehmen macht. Hat jemand irgendwelche schlauen Wege, um all diese Werte auf einmal und in allen Fällen zu ersetzen? Vielen Dank!

[5, array(['d', 'e'], 
    dtype='<U1'), array(['a', 'e'], 
    dtype='<U1')] 

Antwort

1

Sie können dies versuchen:

x = [np.array(['a','b','c'], dtype="<U4"),np.array(['d','e'], dtype="<U4"),np.array(['a','e'], dtype="<U4")] 
dict_x = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e':5} 

for i in x: 
    i[ i == 'a'] = dict_x.get('a') 

x = array(['1', 'b', 'c'], 
     dtype='<U1'), array(['d', 'e'], 
     dtype='<U1'), array(['1', 'e'], 
     dtype='<U1')] 
+0

Ja - genau. Ich habe gerade eine Schleife erstellt, um alle Schlüssel des Wörterbuchs als äußere Schleife zu durchlaufen und dann Ihre als innere Schleife mit einer Variablen für 'a' zu versehen. Ich hatte gehofft, dass ein Schuss alles ersetzen würde, aber ich denke, es sollte immer noch O (n) sein, also schade ich nicht, oder? Vielen Dank! – user6142489

+0

Ich habe gerade herausgefunden, dass dies die Zahl auf eine einzelne Ziffer kürzt. Also, 1000 wird als 1 gelesen. Irgendwelche Ideen? – user6142489

+0

Da der dtype des Arrays '

Verwandte Themen