2016-01-06 7 views
5

I durch das Verhalten der Typumwandlung verwirrt bin beim Aufbau eines strukturierten/recarray:Python Strukturiert/recarray Typ Konvertierungsverhalten

Dieses einfache Beispiel in numerischen Feldern nimmt aber definiert den Typ als String:

data = [(1.0, 2), (3.0, 4)] 
np.array(data, dtype=[('x', str), ('y', int)]) 

welche produziert: zu leeren Saiten wurden

array([('', 2), ('', 4)], dtype=[('x', 'S'), ('y', '<i8')]) 

So sind die Werte umgewandelt, die nicht das, was man erwarten würde ist aus:

str(1.0) 

Welcher erzeugt die Zeichenkette '1.0'. Was verursacht dieses Verhalten?

Antwort

6

Sie müssen eine Zeichenfolgenbreite angeben, z. ‚A3‘:

>>> np.array([(1.0, 2),(3.0,4)],dtype=[('x','a3'),('y',int)]) 
array([('1.0', 2), ('3.0', 4)], 
     dtype=[('x', 'S3'), ('y', '<i4')]) 

Nur str effektiv bedeutet die Nutzung von String-Feld von 0 Bytes - was natürlich zu klein ist, um die Zeichenfolge Wiedergabe des Schwimmers zu halten.