Seite 1 von 1

Zwei Arrays vergleichen und ausgeben

Verfasst: Mittwoch 30. Januar 2019, 21:50
von Joey20
Ich gehe stark davon aus, dass mein Betreff sehr schwammig geschildert ist.
Also Leute , ich hab echt vieles versucht , leider ohne Erfolg.

Werde es mal mit einem Beispiel versuchen meine Problemstellung zu schildern.

Ich hab zwei Arrays:

A und B
A= array([[1. , 1.09, 1.08, 1.34],
[1. , 1.16, 1.26, 1.54],
[1. , 1.22, 1.07, 1.03],
[1. , 0.93, 0.97, 0.92],
[1. , 1.11, 1.56, 1.52],
[1. , 0.76, 0.77, 0.9 ],
[1. , 0.92, 0.84, 1.01],
[1. , 0.88, 1.22, 1.34]])

B=array([[0.1 , 0.01, 0.02, 0. ],
[0.1 , 0. , 0. , 0. ],
[0.1 , 0. , 0.03, 0.07],
[0.1 , 0.17, 0.13, 0.18],
[0.1 , 0. , 0. , 0. ],
[0.1 , 0.34, 0.33, 0.2 ],
[0.1 , 0.18, 0.26, 0.09],
[0.1 , 0.22, 0. , 0. ]])

Nun will ich
A[:,2]
mit
B[:,3]
vergleichen aber mit einer Bedingung.
Die Bedingung lautet ,alle Werte von
A[:,2]
größer 1.1 aus der Spalte zu entfernen und lediglich dann auch die Spaltenwerte von quote]B[:,3][/quote] zu betrachten.


Wäre in dem Fall:

Für
A[:,2] =[1.08,1.07,0.97,0.77,0.84]
und für
B[:,3]
wäre es dann
[0.,0.03,0.13,0.33,0.26]
Mein Ziel ist es dann von A Spalte 2 und 1 und von B Spalte 3 und 2 mit einer for Schleife zu vergleichen.

Ich wäre für jegliche Hilfe sehr dankbar :)

Re: Zwei Arrays vergleichen und ausgeben

Verfasst: Mittwoch 30. Januar 2019, 23:41
von Sirius3
Erster Schritt ist eine Maske mit den gültigen Werten zu erzeugen:

Code: Alles auswählen

mask = A[:, 2] <= 1.1
if (A[mask, 2] == B[mask, 3]).all():
    print("gleich")
for-Schleifen braucht man nicht.

Re: Zwei Arrays vergleichen und ausgeben

Verfasst: Donnerstag 31. Januar 2019, 11:18
von Joey20
WOW :)
So einfach geht das. Vielen lieben Danke

Re: Zwei Arrays vergleichen und ausgeben

Verfasst: Donnerstag 31. Januar 2019, 12:25
von Joey20
Jetzt hätte ich doch noch mal eine Frage.
Und zwar habe ich es so gemacht

m=3
V = np.copy(B)
c=[ ]
for i in range(m-1,0,-1):
mm= A[:,i] <= 1.10
if(A[mm,i] == V[mm,i+1]).all():
print("gleich")

reg= np.polyfit(A[mm,i],V[mm,i+1],2)
C = np.polyval(reg,A[mm,i])
c.append(C)
...


Da kam ein ganz anderes Ergebnis raus, als das was ich berechnet hatte.
So habe ich mir mal paar Zeilen rausgenommen und geguckt wo der Fehler liegen kann.

for i in range(m-1,0,-1):
print(A[mm,i])

[1.08 0.97 0.77 0.84 1.22] ----> Sollte eig [1.08,1.07,0.97,077,0.84]
[1.09 0.93 0.76 0.92 0.88]. --> hier ist alles richtig


Woran kann es liegen ?

Re: Zwei Arrays vergleichen und ausgeben

Verfasst: Donnerstag 31. Januar 2019, 12:32
von __blackjack__
@Joey20: Da Du nicht zeigst wie `A` überhaupt zustande kommt, kann man da schlecht was dazu sagen warum das jetzt nicht dem entspricht was Du erwartest.

Re: Zwei Arrays vergleichen und ausgeben

Verfasst: Donnerstag 31. Januar 2019, 12:53
von Joey20
@__blackjack__: A ist einfach aus einem Paper entnommen worden.
Daher kann ich dir auch nicht viel mehr sagen, war nur ein kleines Rechenbeispiel

Re: Zwei Arrays vergleichen und ausgeben

Verfasst: Donnerstag 31. Januar 2019, 13:04
von __blackjack__
@Joey20: Dann ist die Erklärung offensichtlich das Du es falsch abgetippt hast‽

Re: Zwei Arrays vergleichen und ausgeben

Verfasst: Donnerstag 31. Januar 2019, 17:57
von Joey20
@__blackjack__: Hab eben noch mal geschaut, leider alles richtig abgetippt . Sehr komisch

Re: Zwei Arrays vergleichen und ausgeben

Verfasst: Donnerstag 31. Januar 2019, 18:09
von __blackjack__
@Joey20: Dann liegt es an irgendeiner Stelle im Code die wir nicht kennen. Du kannst ja einfach mal strategisch im Programm verteilt testen ab welcher Stelle im Programmablauf Deine Erwartung an die Daten nicht mehr erfüllt sind, um die Stelle einzugrenzen an der das Array verändert wird.