Ich weiß, dass dies eine sehr klassische Frage ist, aber nach vielen Posts habe ich beschlossen, es zurück zu bringen, ohne in der Lage zu sein, eine elegante Lösung für etwas scheinbar einfach zu finden. Das Problem:Von Python Counter-Wörterbuch zu nd numpy Array
Ich habe einen Zähler Wörterbuch aus einem großen Datensatz, mit aussagekräftigen integer Schlüsseln und integer Vorkommen:
co = Counter({8046: 1360, 10046: 1248, 11046: 1024})
Und ich einfach will mit einem grundlegenden Integer-Array, um am Ende:
a = np.array([[8046,1360],[10046,1248],[11046,1024]])
die Spezifität dieses Problem (oder das Fehlen von Spezifität) ist, dass I integer Tasten haben, und ich nicht ein strukturiertes Array benötigen. Die folgenden
dtype = dict(names = ['id','data'], formats=['i8','i8'])
array = np.fromiter(iter(co.items()), dtype=dtype)
ist nicht ganz befriedigend, bis mit der Endung
a = [(8046, 1360) (10046, 1248) (11046, 1024)]
Ist es nur eine Frage der dtype? Danke vielmals!
Ja! Ich habe mich in diesen Typen und Iteratoren verloren und die Grundlagen vergessen. Also die Kombination np.array (list()) vermeidet uns, dtypes anzugeben. Jetzt wandle ich, warum 'np.fromiter' so starr ist, aber ich denke, ich vermisse gerade etwas. Danke @kennytm. – Etienne
Wenn ich nicht falsch liege, sollte ein einfaches 'co.items()' anstelle von 'list (co.items())' genügen. – JRodDynamite
@JRodDynamite 'np.array (co.items())' erstellt ein Array von Objekten anstelle von 2D-Arrays. 'array (dict_items ([(8046, 1360), (10046, 1248), (11046, 1024)]), dtype = Objekt)' – kennytm