Seite 1 von 1

Rechnen mit Arrays

Verfasst: Samstag 23. November 2019, 19:33
von SiggiUP
Hallo,
ich habe erst vor kurzem mit Python angefangen und möchte gerne zwei Mengen von Vektoren mit einander verknüpfen, indem ich sie addiere und dabei noch eine Funktion der beiden Vektoren in die dritte Komponente addiere. Ich habe das ganze mit zwei for loops geschrieben und gehe so die einzelnen Vektoren durch. Jetzt stellt sich mir die Frage ist es möglich das ganze ohne for Schleifen zu machen? Also gibt es eine clevere Art Mengen von arrays zu addieren (inklusiver einer Funktion die separat definiert wird?
Ich interessiere mich dafür da ich deutlich größere Mengen von Vektoren miteinander verknüpfen möchte und ich frage mich ob man das effizienter machen kann.
Nebenbei habe ich auch gerade das Problem, dass ich die Punkte nicht zu der Menge AB hinzufügen kann, weil das berechnete g ein ndarray ist. Vielleicht kann mir dabei auch jemand helfen, wie man damit richtig umgeht?

Code: Alles auswählen

import numpy as np
def w(x,y):
    return -2*x[0]*y[1]+2*x[1]*y[0]

A = [np.array([1,0,3]),np.array([3,4,5]),np.array([6,3,6]),np.array([3,4,6])]
B = [np.array([1,2,0]),np.array([2,44,15]),np.array([9,23,6]),np.array([3,6,5])]

AB = set()
for x in A:
    for y in B:
        g = x + y + np.array([0, 0, w(x, y)])
print('AB=',AB)
Vielen Dank!

Re: Rechnen mit Arrays

Verfasst: Samstag 23. November 2019, 21:04
von Sirius3
Zuerst mußt Du Deine Listen in Matrizen umwandeln und dann einfach nur noch die Matrizen verknüpfen.

Code: Alles auswählen

A = np.array(A)
B = np.array(B)
AB = A[:,None,:] + B[None,:,:]
AB[:,:,2] -= 2*(A[:,None,0]*B[None,:,1] - A[:None,1]*B[None,:,0])

Re: Rechnen mit Arrays

Verfasst: Donnerstag 28. November 2019, 15:08
von SiggiUP
Hey,
vielen lieben Dank! für die schnelle Antwort und den hilfreichen Tipp. Das funktioniert gut. Eine Frage habe ich noch dazu: Gibt es auch eine Effiziente Art, das Produkt wieder in die vorherige Form zu bringen, als einen Array von Arrays? Wenn ich zum Beispiel AB ausgerechnet habe und dann noch einen Array C mit Arrays der Länge 3 habe und ABC ausrechnen möchte indem ich (AB) mit C multipliziere wie vorher.
Beste Grüße

Re: Rechnen mit Arrays

Verfasst: Donnerstag 28. November 2019, 15:33
von Sirius3
Wie willst Du denn eine 3x3-Matrix mit einem Vektor der Länge 3 multiplizieren?