gezielt Werte in np-array ändern

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
G-Rizzle
User
Beiträge: 90
Registriert: Donnerstag 18. Februar 2021, 12:26

Hi,

Ich möchte aus 17,000,000 Koordinatenpunkten der Form: x1 y1 z1, x2 y2 z2, .... eine reguläre Matrix der Form:

nan---x1-------x2------......
y1-----z11-----z12
y2-----z21-----z22
...

erstellen. Die Koordinaten sind kreuz und quer, es gibt kaum System. Mein Vorgehen war jetzt bisher: Ich extrahiere erstmal alle x, y und z Koordinaten in 3 seperate Vektoren. Danach sortiere ich alle unique x- und y-Koordinaten der Reihe nach. Danach loope ich ein mal über alle einzigartigen x- und y- Werte und setze mithilfe

Code: Alles auswählen

  
for x_index, unique_x in enumerate(unique_x_values_sorted):    
  x_vector[x_vector== unique_x] = x_index     

jeden vektor Wert zu einem zugehörigen Index. Das mache ich auch für y. Abschließend erstelle ich eine leere z-matrix und fülle sie an entsprechenden Stellen:

Code: Alles auswählen

  
z_matrix = np.zeros((len(unique_y_values_sorted), len(unique_x_values_sorted)))

# fill the z-matrx; this method takes 3 vectors and sets the according matrix values (accessed via _y_vector_integered, _x_vector_integered) to the according _z_vector_original-value
z_matrix[y_vector, x_vector] = z_vector

Durch den besagten Schleifendurchlauf ist das ganze furchtbar ineffizient. Gibt es nicht eine Möglichkeit, das ganze über eine np-Funktion etc. besser zu machen?

Grüße
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

np.unique liefert dir doch mit return_inverse das, was Du hier so kompliziert mit Schleife nachbaust.
G-Rizzle
User
Beiträge: 90
Registriert: Donnerstag 18. Februar 2021, 12:26

hmmm, ne, die schleife ist doch dazu da, die Elemente im 17,000,000 Einträge langen x- bzw. y-vektor von mm Werten gleich dem zugehörigen Index zu setzen
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Hmmm, ne, doch, return_inverse liefert genau das was du brauchst.
G-Rizzle
User
Beiträge: 90
Registriert: Donnerstag 18. Februar 2021, 12:26

okay tatsächlich :D danke
Antworten