Hallo!
Ich programmiere mit VS Code und
wollte im Debug-Fenster ein Array mit der Ausnutzung einer großen Zeilenbreite dokumentieren,
womöglich den Ausdruck in eine Datei schreiben.
Wäre die Numpy Funktion set_printoptions von Nutzen?
Wie geht das?
Danke für euren Rat
Erhy
Doku eines Numpy-Arrays mit großen Zeilenbreite
@Erhy,
Ich bin mir nicht ganz sicher, ob ich die Frage richtig verstanden habe.
VS Code hat einen eingebauten Data Viewer für Numpy Arrays und Pandas Dataframes.
Er ist erreichbar, nachdem ein Breakpoint im Debug-Modus erreicht wurde.
Im Aktivity Bar unter "Run and Debug", "Variables" aufklappen. Rechtsklick auf das Numpy Array und dann "View Value in Data Viewer"
Der hat einige nette Funktionen, ähnlich wie in PyCharm.
Ist auch hier beschrieben:
https://code.visualstudio.com/docs/data ... e-tutorial
Ich bin mir nicht ganz sicher, ob ich die Frage richtig verstanden habe.
VS Code hat einen eingebauten Data Viewer für Numpy Arrays und Pandas Dataframes.
Er ist erreichbar, nachdem ein Breakpoint im Debug-Modus erreicht wurde.
Im Aktivity Bar unter "Run and Debug", "Variables" aufklappen. Rechtsklick auf das Numpy Array und dann "View Value in Data Viewer"
Der hat einige nette Funktionen, ähnlich wie in PyCharm.
Ist auch hier beschrieben:
https://code.visualstudio.com/docs/data ... e-tutorial
Danke für den Beitrag.
Habe Jupyter Notebook deinstalliert, da mir der Vorteil nicht bewusst war.
Nun habe ich einen Beautifier für mein RGB-image Array geschrieben.
Wenn ich das Array mit print() anschaue bekomme ich z.B.
Mit dieser Funktion
erhalte ich mit print( p_arr( arr )
Erhy
Habe Jupyter Notebook deinstalliert, da mir der Vorteil nicht bewusst war.
Nun habe ich einen Beautifier für mein RGB-image Array geschrieben.
Wenn ich das Array mit print() anschaue bekomme ich z.B.
Code: Alles auswählen
[[[ 6 7 8]
[ 9 10 11]
[ 12 13 14]
[255 255 255]
[255 255 255]]
[[ 21 22 23] ...
Code: Alles auswählen
def p_arr(a) :
import re
li = []
for i in range( a.shape[0] ) :
li.append( ''.join( \
( np.array2string( a[i], max_line_width=np.inf, separator=',').split('\n'))) )
z = np.array(li)
x = np.array2string( z, max_line_width=np.inf, separator=',')
p_beg = re.compile("\['")
x0 = p_beg.sub('[\n',x)
pEnd = re.compile("'\]")
x1 = pEnd.sub('\n]',x0)
pAgain = re.compile("','")
x2 = pAgain.sub(',\n',x1)
# print(x2)
return x2 # to print in debug window
Code: Alles auswählen
[
[[ 6, 7, 8], [ 9, 10, 11], [ 12, 13, 14], [255,255,255], [255,255,255]],
[[ 21, 22, 23], [ 24, 25, 26], [ 27, 28, 29], [255,255,255], [255,255,255]],
[[ 36, 37, 38], [ 39, 40, 41], [ 42, 43, 44], [255,255,255], [255,255,255]],
[[ 51, 52, 53], [ 54, 55, 56], [ 57, 58, 59], [255,255,255], [255,255,255]],
[[ 66, 67, 68], [ 69, 70, 71], [ 72, 73, 74], [255,255,255], [255,255,255]],
[[ 81, 82, 83], [ 84, 85, 86], [ 87, 88, 89], [255,255,255], [255,255,255]]
]
- __blackjack__
- User
- Beiträge: 13928
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Erhy: Auf der Zeichenkettenrepräsentation von Datentypen rumbasteln, und dann auch noch mit regulären Ausdrücken für die man gar keine regulären Ausdrücke gebraucht hätte, weil die einfach nur statische Teile ersetzen, ist nicht wirklich gut. Vorsichtig ausgedrückt.
Wenn Du eine eigene Zeichenkettendarstellung willst, dann schreib Code der die *aufbaut* und keinen der eine auch noch mehr als einmal zwischen Arrays und Zeichenketten hin und her wandelt und darauf einprügelt bis es passt.
Wenn Du eine eigene Zeichenkettendarstellung willst, dann schreib Code der die *aufbaut* und keinen der eine auch noch mehr als einmal zwischen Arrays und Zeichenketten hin und her wandelt und darauf einprügelt bis es passt.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
Der Data Viewer ist auch nur im Debug-Modus und auch nur numpy arrays und pandas dataframes sichtbar.Habe ich noch nicht entdeckt,
Es lohnt sich aber danach zu suchen, denn man bekommt innerhalb von VS Code eine Excel ähnliche Darstellung in der man beliebig scrollen, filtern und slicen kann.
ist mir jetzt gelungen
habe in meiner Python Installation mit pip
pandas und jupyter hinzugefügt.
Dann VS Code neu gestartet und die Extension
Jupyter notebook support
hinzugefügt.
Nun kann ich
View Value in Data Viewer anwählen.
Wie ein .ipynb zu gebrauchen ist, weiß ich noch nicht.
Erhy
habe in meiner Python Installation mit pip
pandas und jupyter hinzugefügt.
Dann VS Code neu gestartet und die Extension
Jupyter notebook support
hinzugefügt.
Nun kann ich
View Value in Data Viewer anwählen.
Wie ein .ipynb zu gebrauchen ist, weiß ich noch nicht.
Erhy
Du kannst ihn auch beim normalen Debuggen einsetzen. Man braucht kein .ipynb Notebook um den Data Viewer zu nutzen.Wie ein .ipynb zu gebrauchen ist, weiß ich noch nicht.
Wenn du dir ein numpy Array im Data Viewer anschauen willst, musst du nur einen Breakpoint in die entsprechende folgende Zeile setzen und im Sidebar unter Debug , Variablen die entsprechende Variable finden, Rechtsclick, "View Value in Data Viewer"
- __blackjack__
- User
- Beiträge: 13928
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Die Ausgabe mal systematisch aufgebaut statt mit Zeichenkettenoperationen auf Repräsentation von Datenstrukturen hingebogen:
Code: Alles auswählen
#!/usr/bin/env python3
import numpy as np
def convert_to_text(image_data):
return "[\n{}\n]".format(
",\n".join(
"[{}]".format(
", ".join(
"[{}]".format(
",".join(f"{component:3d}" for component in pixel)
)
for pixel in row
)
)
for row in image_data
)
)
def main():
image_data = np.array(
[
[
[6, 7, 8],
[9, 10, 11],
[12, 13, 14],
[255, 255, 255],
[255, 255, 255],
],
[
[21, 22, 23],
[24, 25, 26],
[27, 28, 29],
[255, 255, 255],
[255, 255, 255],
],
[
[36, 37, 38],
[39, 40, 41],
[42, 43, 44],
[255, 255, 255],
[255, 255, 255],
],
[
[51, 52, 53],
[54, 55, 56],
[57, 58, 59],
[255, 255, 255],
[255, 255, 255],
],
[
[66, 67, 68],
[69, 70, 71],
[72, 73, 74],
[255, 255, 255],
[255, 255, 255],
],
[
[81, 82, 83],
[84, 85, 86],
[87, 88, 89],
[255, 255, 255],
[255, 255, 255],
],
],
dtype=np.uint8,
)
print(convert_to_text(image_data))
if __name__ == "__main__":
main()
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware