2017-07-04 2 views
-1

Ich benutze die numpy Broadcast-Funktion, um eine Reihe von Werten über eine Reihe von Koordinaten abzubilden. Die Werte können vom heterogenen Typ sein, einschließlich Grundelementen. Mein Problem ist, dass die Broadcast-Funktion die primitiven Typen unter bestimmten Bedingungen konvertiert. Siehe zum Beispiel diesen Code:Numpy Typ Konvertierung während der Übertragung

In [11]: x = np.array([1]) 
    ...: y = np.array(['test', 10]) 
    ...: list(np.broadcast(x, y)) 

Out[11]: [(1, 'test'), (1, '10')] 

Der int 10, die in der y-Wert übergeben wurde, ist in einen String ‚10‘ nach der Sendung umgewandelt worden.

Kann dieses Gießverhalten irgendwie verhindert werden?

+1

Es wird während der Übertragung nicht konvertiert, es wird bei 'y' Initialisierung konvertiert. Drucken Sie "y" nach Ihrer zweiten Zeile. –

Antwort

2

Dies liegt daran, wenn Sie

y = np.array(['test', 10]) 

das Ergebnis tun

array(['test', '10'], 
    dtype='<U4') 

ist Wenn Sie y = np.array(['test', 10], dtype=object) das Ergebnis zu tun sein wird, wie Sie es wünschen.

Verwandte Themen