only size-1 arrays can be converted to Python scalars

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
pythonstart777
User
Beiträge: 12
Registriert: Sonntag 23. Januar 2022, 03:32

Hallo ich bekomme bei diesem Code den Fehlercode im Betreff, könnte mir einer weiterhelfen? Ich habe schon um vectorize und atype gelesen allerdings hat es nicht funktioniert. Scheint an der e Funktion zu liegen. Wenn möglich bitte ausführlich bin Beginner :D

Code: Alles auswählen

def zeichne_diagramm():

    
    i=float(ef_ti.get())
    aN=float(ef_tan.get())
    b= float(ef_bw.get())
    n=float(ef_ex.get())
    m=float(ef_msv.get())
    VLN=float(ef_VLN.get())
    RLN=float(ef_RLN.get())

    x=arange(aN, i, 1)
    x.astype(int)
    y=i+((i-x)/(i-aN))/m*(VLN-RLN)/b/(exp(((i-x)/(i-aN))**((n-1)/n)/b/m*(VLN-RLN)/((VLN-RLN)/log((VLN-i)/(RLN-i)))-1))
    
    plt.plot(x,y)
    
    plt.show()
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Alles was eine Funktion benötigt, muss sie über ihre Argumente bekommen. Die ganzen ef_* Variablen kommen aus dem Nichts. Benutze keine globalen Variablen und nenne sie aussagekräftig, keine Abkürzungen, wie ef oder vln, bw, msv, etc.
Das astype hat keinen Sinn, da du mit dem Ergebnis nichts machst.

Ohne die import-Zeiken kann hier niemand nachvollziehen, woher exp oder log kommen. Wenn man raten müsste, aus math statt aus numpy. Ich befürchte per *-Import. Den benutzt man nicht, weil dadurch unklar ist, woher der Name wirklich stammt, was ja bei Dir zu Fehlern führt.
tonikae
User
Beiträge: 90
Registriert: Sonntag 23. Februar 2020, 10:27

Einfach mal ins Blaue hinein geraten:

x=arange(aN, i, 1)

Da vermisse ich den Bezug zu Numpy.
Probiere mal:

import numpy as np
x=np.arange(aN, i, 1)

Ansonsten ist es(wie "sirius3" schon schrieb) wirklich zu wenig.
pythonstart777
User
Beiträge: 12
Registriert: Sonntag 23. Januar 2022, 03:32

danke ich habs kurz nach meinem Eintrag geschafft. Das astype stand dort nur drinnen weil ich es vergessen hatte zu löschen. hatte viel ausprobiert.

Danke für den Tipp mit den globalen variablen.

Um es aufzuklären: exp nutze er aus dem math modul. als ich dann wie ihr schon richtig bemerkt hattet numoy as np importiert hatte und np.exp eingegeben habe lief es dirkt

Vielen dank
pythonstart777
User
Beiträge: 12
Registriert: Sonntag 23. Januar 2022, 03:32

Ich habe noch ne weiter Frage: Ist es möglich bei nachfolgendem Diagramm rechts direkt an den Linien die Linie zu beschriften? Die Linien werden ihre Positionen ändern wenn ich andere Variablen vorgebe also müsste das ganze natürlich mit den Linien verknüpft sein. mit plt.text() hätte ich ja eine feste beschriftung

Code: Alles auswählen

# Linien Auslegungsdiagramm
        for ma in np.arange(0.1, 1.1, 0.1): 
        

            phi=np.arange(0.1, 1.25, 0.05)
        
        
            y=(i2+phi/ma*(VLN2-RLN2)/b2/(np.exp(phi**((n2-1)/n2)/n2/ma*(VLN2-RLN2)/dN)-1))
            y1=y-i2
               
            x=(phi/ma*(VLN2-RLN2)+y)-i2
            
            plt.plot(x,y1, color='black', lw=0.5)
            plt.text(75, 10, "0,1")
            
            
        for phi in np.arange(0.1, 1.3, 0.1):
        
            ma=np.arange(0.1, 2.1, 0.1)
        
        
            y=(i2+phi/ma*(VLN2-RLN2)/b2/(np.exp(phi**((n2-1)/n2)/n2/ma*(VLN2-RLN2)/dN)-1))
            y1=y-i2
               
            x=(phi/ma*(VLN2-RLN2)+y)-i2

            plt.plot(x,y1, color='black', lw=0.5)
Zuletzt geändert von pythonstart777 am Dienstag 25. Januar 2022, 00:38, insgesamt 2-mal geändert.
pythonstart777
User
Beiträge: 12
Registriert: Sonntag 23. Januar 2022, 03:32

Antworten