2015-04-08 7 views
7

Ich muss eine numpy.ndarray aus array-ähnlichen Daten mit int, float oder komplexen Zahlen erstellen. Ich hoffe, es mit numpy.asarray Funktion zu tun.numpy.asarray: wie überprüft man, dass das Ergebnis dtype numerisch ist?

Ich möchte nicht, dass es eine strenge dtype Argument geben, weil ich komplexe Werte zu complex64 oder complex128 konvertieren möchten, schwimmt auf float32 oder float64 usw.

Aber wenn ich einfach nur numpy.ndarray(some_unknown_data) laufen und schauen Wie kann ich am D-Typ seines Ergebnisses verstehen, dass die Daten numerisch sind, nicht Objekt oder String oder etwas anderes?

Antwort

14

Sie könnten prüfen, ob der D-Typ des Arrays ein Sub-D-Typ von np.number ist. Zum Beispiel:

>>> np.issubdtype(np.complex128, np.number) 
True 
>>> np.issubdtype(np.int32, np.number) 
True 
>>> np.issubdtype(np.str_, np.number) 
False 
>>> np.issubdtype('O', np.number) # 'O' is object 
False 

Im Wesentlichen diese prüft nur, ob die dtype unten ist 'Zahl' im NumPy dtype hierarchy:

enter image description here

Verwandte Themen