Seite 1 von 1
Werte aus Array zu string & in neuer Liste
Verfasst: Samstag 4. April 2020, 12:20
von Eneri_Gnats
Hallo Zusammen,
ich habe eine Frage zu der Erstellung von einem String aus Integer aus verschiedenen Positionen in einem Array.
Ich habe ein Array in dem in der 1 und 2 Spalte Zahlen stehen, die einen Start und Endpunkt wiedergeben. Ich möchte in eine neuen Liste eine Spalte haben in der dann als string steht: [1-2, 2-3, 5-6....] das Minus zwischen den Zahlen muss auch iwie eingefügt werden.
Array:
Code: Alles auswählen
ppc['br'] = array([
# from to
[ 1, 71, ...],
[ 2, 72, ...] ])
neue_Liste = ['1-71', '2-72']
Ich hoffe mir kann jemand weiter helfen.
Viele Grüße
Re: Werte aus Array zu string & in neuer Liste
Verfasst: Samstag 4. April 2020, 13:12
von Saptah
Hallo,
ich habe mal auf die schnelle ein Minimalbeispiel geschrieben, was dir weiterhelfen könnte.
Bei ungeraden Array-Längen, wird das letzte Element ignoriert, wenn dies nicht gewünscht ist, müsste für ungerade Arrays der "Sonderfall" explizit definiert werden:
Code: Alles auswählen
import numpy as np
a=np.array([[1,2,3,4],[4,5,6,8]])
neue_liste=[]
for i in a:
for j in range(0,len(i),2):
if j<len(i)-1:
w1=i[j]
w2=i[j+1]
str1=str(w1)+"-"+str(w2)
neue_liste.append(str1)
print(neue_liste)
print(a)
print("ENDE")
Re: Werte aus Array zu string & in neuer Liste
Verfasst: Samstag 4. April 2020, 14:11
von __blackjack__
@Saptah: Ich denke Du hast die Frage falsch verstanden. Bei Deinem Beispiel müsste ["1-2", "4-5"] als Ergebnis kommen. Die Start/End-Werte stehen in den ersten beiden Spalten. Die restlichen Spalten sind egal.
`str()` und ``+`` um Zeichenketten mit Werten zusammenstückeln ist auch eher BASIC als Python. Und kryptische Namen und dann auch noch mit Nummern sind nicht gut.
Die Lösung ist viel einfacher: die beiden ersten Spalten nehmen und in einer „list comprehension“ Start- und Endwerte in Zeichenketten formatieren:
Code: Alles auswählen
In [356]: a
Out[356]:
array([[1, 2, 3, 4],
[4, 5, 6, 8]])
In [357]: [f"{start}-{end}" for start, end in a[:, :2]]
Out[357]: ['1-2', '4-5']
Re: Werte aus Array zu string & in neuer Liste
Verfasst: Samstag 4. April 2020, 16:03
von Eneri_Gnats
ja genau das ist was ich gesucht habe. Danke Danke @blackjack
Re: Werte aus Array zu string & in neuer Liste
Verfasst: Samstag 4. April 2020, 16:07
von Eneri_Gnats
ich frage mich gerade nur warum die Zahlen mit einer Nachkommastelle angegeben sind obwohl dass in meinem array nicht so ist. Der String wird zu 1.0-4.0 statt 1-4
Re: Werte aus Array zu string & in neuer Liste
Verfasst: Samstag 4. April 2020, 16:33
von Saptah
Eneri_Gnats hat geschrieben: Samstag 4. April 2020, 16:07
ich frage mich gerade nur warum die Zahlen mit einer Nachkommastelle angegeben sind obwohl dass in meinem array nicht so ist. Der String wird zu 1.0-4.0 statt 1-4
Da wird der Datentyp "float" statt "int" sein.
Wenn a dein ursprüngliches Array ist, gibt mal folgendes ein:
Wenn die Ausgabe "float32" ist, dann probiere mal den Typ auf "int64" zu ändern:
Re: Werte aus Array zu string & in neuer Liste
Verfasst: Samstag 4. April 2020, 18:20
von __blackjack__
Alternativ kann man beim Formatieren sagen, dass keine Nachkommastellen gewünscht sind:
Code: Alles auswählen
In [365]: a
Out[365]:
array([[1., 2., 3., 4.],
[4., 5., 6., 8.]])
In [366]: [f"{start:.0f}-{end:.0f}" for start, end in a[:, :2]]
Out[366]: ['1-2', '4-5']