numpy.set_printoptions(formatter={???})

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

Mir geht es um folgende Stelle im numpy-Handbuch:
numpy.set_printoptions(precision=None,...,formatter=None)
These options determine the way floating point numbers, arrays and other NumPy objects are displayed.
...
formatter : dict of callables, optional.
If not None, the keys should indicate the type(s) that the respective formatting function applies to. Callables should return a string. Types that are not specified (by their corresponding keys) are handled by the default formatters. Individual types for which a formatter can be set are:
- 'bool'
- 'int'
- 'timedelta' : a `numpy.timedelta64`
- 'datetime' : a `numpy.datetime64`
- 'float'
- 'longfloat' : 128-bit floats
- 'complexfloat'
- 'longcomplexfloat' : composed of two 128-bit floats
- 'numpy_str' : types `numpy.string_` and `numpy.unicode_`
- 'str' : all other strings
Ich gebe mir echt Mühe, verstehe aber trotzdem nur "Bahnhof", oder genauer gesagt, "These options determine the way floating point numbers, arrays and other NumPy objects are displayed", und das ist genau was ich möchte, da ich mit meiner Ausgabe unzufrieden bin.

Da leider das Handbuch nicht einmal ein halbes Beispiel hinzufügt, wäre ich über die Maßen dankbar, wenn mir jemand erklären kann, wie diese hieroglyphische formatter-Option gehandhabt wird. Welches sind die mir völlig unbekannten "respective formatting functions", welches sind die "default formatters", und wie setzt man ein Format für ein "individual type"?

Meine derzeitige abstruse Fehlermeldung ist:
TypeError: set_printoptions() got an unexpected keyword argument 'formatter'
BlackJack

@Goswin: Jetzt hättest Du zu der Fehlermeldung noch den Quelltext zeigen können, der dazu geführt hat. Wobei zumindest mein `numpy` hier dieses Schlüsselwort bei der Funktion tatsächlich nicht kennt. Hast Du mal geschaut ob Handbuch und `numpy` von der Version her zusammen passen? Hier ist's:

Code: Alles auswählen

In [122]: np.__version__
Out[122]: '1.3.0'
In [123]: inspect.getargspec(np.set_printoptions)
Out[123]: ArgSpec(args=['precision', 'threshold', 'edgeitems', 'linewidth', 'suppress', 'nanstr', 'infstr'], varargs=None, keywords=None, defaults=(None, None, None, None, None, None, None))
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

@BlackJack: Vielen Dank.

Ich benutze numpy Version 1.6.1, das dürfte eine der letzten sein. Aber laut "inspect.getargspec(np.set_printoptions)" hat auch diese Version *keine* formatter-Option.

Das von mir eingesehene Handbuch, ich kann nicht herausfinden von welcher numpy-Version, ist
http://docs.scipy.org/doc/numpy/referen ... =formatter
Auf derselben Website ganz unten steht "Last updated on Aug 27, 2011", neuer gehts also nicht. Wahrscheinlich :wink: habe ich so eine Anweisung wie

Code: Alles auswählen

from __StarTreckFuture__ import formatter
vergessen einzufügen.

Aber dank BlackJacks Antwort habe ich das Modul "inspect" kennengelernt, und das ist für mich schon mal lohnend.
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Was du dort verlinkt hast ist die Version 2.0.dev-4fb84e7; also die aktuelle Entwicklerversion. Die Dokumentation zu Version 1.6 gibt es hier: http://docs.scipy.org/doc/numpy-1.6.0/reference/.
Antworten