Seite 1 von 1

Listen-/Array-Formatierung

Verfasst: Montag 27. Juli 2020, 11:06
von Twantie
Hallo Hallo,

irgendwie hat sich der Output der hsplit Methode in meinem Code geändert.

Ich habe folgende Liste

Code: Alles auswählen

values = [0, 0, 0, 0, 71, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 98, 0, 
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 243, 163, 139, 0, 0, 112, 5]
Ich möchte nun aus dieser Liste eine neue Liste, oder Array erzeugen, in dem alle Werte als 2er Pakete, und ein 4er Paket gespeichert werden, also der optimale Output wäre dann folgender:

Code: Alles auswählen

final_list = [(0, 0), (0, 0), (71, 146), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (95, 98), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (193, 243, 163, 139), (0, 0), (112, 5)]
Probiert habe ich es per NumPy Arrays:

Code: Alles auswählen

value_array = np.array(values)
value_array_s = value_array.reshape(28,2)
und dann nochmal gesplittet mit

Code: Alles auswählen

splitted_array = np.hsplit(value_array_s, (48,52,54))
Ich hatte anfangs einen Output wie ich ihn haben wollte, zumindest ähnlich, und als ich die Zelle im Jupyter Notebook neu ausgeführt habe, kam als Output folgendes:

Code: Alles auswählen

[array([[  0,   0],
       [  0,   0],
       [ 91, 156],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [ 94,  97],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [  0,   0],
       [193, 233],
       [163, 119],
       [  0,   0],
       [122,   4]], dtype=int16), array([], shape=(28, 0), dtype=int16), array([], shape=(28, 0), dtype=int16), array([], shape=(28, 0), dtype=int16)]
Hat jemand eine Ahnung was schief gelaufen sein könnte, oder hat eine bessere Idee wie ich zum gewünschten Output komme?

Grüße

Re: Listen-/Array-Formatierung

Verfasst: Montag 27. Juli 2020, 11:08
von sparrow
Äääh... woran unterscheidest du denn, wann die Werte in einen 2er und wann in einen 4er Tuple kommen sollen?

Re: Listen-/Array-Formatierung

Verfasst: Montag 27. Juli 2020, 11:12
von Twantie
sparrow hat geschrieben: Montag 27. Juli 2020, 11:08 Äääh... woran unterscheidest du denn, wann die Werte in einen 2er und wann in einen 4er Tuple kommen sollen?
An der Stelle wo sich die Werte befinden. Es handelt sich um Bytes und an der Stelle des 4er Tuples sollte ein Datum stehen.

Re: Listen-/Array-Formatierung

Verfasst: Montag 27. Juli 2020, 11:14
von sparrow
Verstehe ich nicht.
Es befinden sich ja an mehreren Stellen Werte. Ist das Zufall? Ist die Aufteilung immer gleich? Ist die Länge der Liste immer gleich?

Re: Listen-/Array-Formatierung

Verfasst: Montag 27. Juli 2020, 11:15
von Twantie
Die Länge der Liste ist immer gleich und die Aufteilung ist auch immer die folgende:

Code: Alles auswählen

[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2]

Re: Listen-/Array-Formatierung

Verfasst: Montag 27. Juli 2020, 11:20
von Sirius3
Woher kommt denn die Liste? Sind das in Wirklichkeit 24 16bit Werte, gefolgt von einem 32bit-Wert und zwei weiteren 16bit-Werten? Dann benutzt man struct.unpack auf den Bytes, bevor nan daraus eine Liste macht.

Re: Listen-/Array-Formatierung

Verfasst: Montag 27. Juli 2020, 11:25
von __blackjack__
Dann ist das ja nicht wirklich nötig das Anhand von Werten in den Daten zu splitten. Man könnte es beispielsweise erst einmal zu Pärchen zusammenfassen und dann noch mal das vorvorletzte Pärchen zu einem Quadrupel.

Wobei sich die Frage stellt was diese Pärchen am Ende eigentlich sein sollen — 16 Bit-Zahlen? Und wo kommen die Daten her?

Re: Listen-/Array-Formatierung

Verfasst: Montag 27. Juli 2020, 11:28
von Twantie
Die Daten kommen aus einem Eeprom. Alle Pärchen sind 16Bit Zahlen mit Ausnahme des 4er Tuples

Re: Listen-/Array-Formatierung

Verfasst: Montag 27. Juli 2020, 11:38
von __blackjack__
@Twantie: Na dann was Sirius3 geschrieben hat.