Ich muss in einer Funktion die Dimension des Eingabearrays checken (numpy array).
Mit x.shape erhalte ich die Dimension von x als Tupel. Beispiel: (2L, 3L).
Gibt es eine einfacher Möglichkeit, als das "trennen" von Zahl und L? Hätte gerne nur die Zahlen (m x n).
Viele Dank
Numpay shape Rückgabewert (nL,mL)
@gerald123: Was stört Dich an dem L? Das sind halt Werte vom Typ `long`, die verhalten sich aber wie `int`, also wo genau liegt das Problem? Sollte es nur um eine Ausgabe für den Benutzer gehen dann erzeuge selbst eine Zeichenkette aus dem Wert beziehungsweise den Werten und nimm nicht die Darstellung des Tupels.
Vielen Dank für eure Antworten:
" dann erzeuge selbst eine Zeichenkette aus dem Wert beziehungsweise den Werten und nimm nicht die Darstellung des Tupels".
Wie erzeuge ich aus:
Tuple(2L, 3L)
die Variablen: m=2 und n = 3 ?
Ich benötige die Dimensionen in dieser Form für weitere Schritte.
" dann erzeuge selbst eine Zeichenkette aus dem Wert beziehungsweise den Werten und nimm nicht die Darstellung des Tupels".
Wie erzeuge ich aus:
Tuple(2L, 3L)
die Variablen: m=2 und n = 3 ?
Ich benötige die Dimensionen in dieser Form für weitere Schritte.
@gerald123: Was für weitere Schritte? Wie gesagt, die Werte verhalten sich wie ganze Zahlen, das 'L' ist nur Teil der Zeichenkettenrepräsentation mittels `repr()`. Nur dort taucht das überhaupt auf, und diese Repräsentation ist sowieso nur für die Fehlersuche gedacht, beziehungsweise für Programmierer um sich Werte als Zeichenketten anzeigen zu lassen und zu sehen was die enthalten. In diesem Fall also um `int`-Werte von `long`-Werten unterscheiden zu können ohne `type()` bemühen zu müssen.
Wenn Du die beiden Werte an einzelne Namen binden möchtest funktioniert das mit `long`-Werten genau wie mit `int`-Werten, oder irgendwelchen anderen Werten die in einem Tupel stecken. Indexzugriff oder Zuweisung an mehrere Namen auf der linken Seite des ``=``, a.k.a. „tupel unpacking“:
Wenn Du die beiden Werte an einzelne Namen binden möchtest funktioniert das mit `long`-Werten genau wie mit `int`-Werten, oder irgendwelchen anderen Werten die in einem Tupel stecken. Indexzugriff oder Zuweisung an mehrere Namen auf der linken Seite des ``=``, a.k.a. „tupel unpacking“:
Code: Alles auswählen
m, n = the_tuple_with_two_elements
Ok - Danke.
Das heißt, obwohl bei value: 2L steht, entspricht das der Zahl 2 und L steht nur für die Typbezeichnung dabei?
Warum steht das nur beim Typ long dabei? Gibts eine Möglickeit, die Typbezeichnugn auch bei long wegzulassen?
Vielen Dank noch einmal!!
Das heißt, obwohl bei value: 2L steht, entspricht das der Zahl 2 und L steht nur für die Typbezeichnung dabei?
Warum steht das nur beim Typ long dabei? Gibts eine Möglickeit, die Typbezeichnugn auch bei long wegzulassen?
Vielen Dank noch einmal!!
Wie BlackJack schon sagte. Das steht da ausschließlich bei der Ausgabe von repr(). Du musst das also gar nicht wegkriegen. Es wird dir nur angezeigt um dir nur zu Debug-Zwecken angezeigt, damit du weißt welche Art von Datentyp dahinter steckt.
@gerald123: Warum stört Dich das L denn so sehr? Das hat keinerlei sonstige Auswirkungen und man sieht es ja nur in der `repr()`-Darstellung, also sehen das eh nur Programmierer, und die wissen so etwas vielleicht ganz gerne. Man weiss dann beispielsweise das, wenn man nicht mit `long` explizit irgendwo zu tun hatte, das eine Rechnung den `int`-Bereich verlassen hat, selbst wenn das Endergebnis als `int` darstellbar wäre. Das kann zum Beispiel interessant sein wenn man einen Algorithmus von oder nach C oder einer andere Programmiersprache portiert wo so etwas unter Umständen zu anderem Verhalten und damit zu anderen Ergebnissen führen würde.
Wie kriegst Du es eigentlich hin, dass shape ein Tuple mit Long Integer zurückgibt? Eine normale Python int hat 64bit (auf Linux 64 bit), größer können Numpy-Arrays sowieso nicht werden (im Jahre 2015).gerald123 hat geschrieben:Mit x.shape erhalte ich die Dimension von x als Tupel. Beispiel: (2L, 3L).