f=np.loadtxt('Single Small Angle 1.txt',unpack=True,skiprows=2)
g=np.loadtxt('Single Small Angle 5.txt',unpack=True,skiprows=2)
x = f-g[:,:11944]
t=range(len(x))
m=math.log10(abs(x))
np.polyfit(t,m)
plt.plot(t,abs(x))
plt.show()
Ich bin mir nur nicht sicher, wie ich mein Problem beheben soll. Es heißt immer wieder:
m=math.log10(abs(x))
TypeError: only length-1 arrays can be converted to Python scalars
TypeError: Don't feed native python lists into numpy functions that expect numpy arrays. Either convert your python list to a numpy array or package your python lists into a tuple.
Python Numpy hat den Ball wirklich auf diesen fallen lassen, diese Fehlermeldung ist schrecklich.Antworten:
Nicht-Numpy-Funktionen mögen
math.abs()
odermath.log10()
spielen nicht gut mit Numpy-Arrays. Ersetzen Sie einfach die fehlerhafte Zeile durch:Abgesehen davon
np.polyfit()
funktioniert der Aufruf nicht, da ein Parameter fehlt (und Sie das Ergebnis sowieso nicht zur weiteren Verwendung zuweisen).quelle
Hier ist eine andere Möglichkeit, diesen Fehler in Python2.7 mit numpy zu reproduzieren:
import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.concatenate(a,b) #note the lack of tuple format for a and b print(c)
Die
np.concatenate
Methode erzeugt einen Fehler:TypeError: only length-1 arrays can be converted to Python scalars
Wenn Sie die Dokumentation zu numpy.concatenate lesen , wird ein Tupel von numpy-Array-Objekten erwartet. Das Umgeben der Variablen mit Parens hat es also behoben:
import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.concatenate((a,b)) #surround a and b with parens, packaging them as a tuple print(c)
Dann druckt es:
[1 2 3 4 5 6]
Was ist hier los?
Dieser Fehler ist ein Fall von Bubble-Up-Implementierung - er wird durch die Ententypisierungsphilosophie von Python verursacht. Dies ist ein kryptischer Low-Level-Fehler, den Python-Eingeweide kotzen, wenn er einige unerwartete Variablentypen empfängt, versucht, wegzulaufen und etwas zu tun, teilweise durchkommt, die Kotzen, Abhilfemaßnahmen versucht, fehlschlägt und Ihnen dann sagt, dass "Sie können". t die Subraum-Responder neu formulieren, wenn der Wind am Dienstag aus dem Osten weht ".
In vernünftigeren Sprachen wie C ++ oder Java hätte es Ihnen gesagt: "Sie können keinen TypeA verwenden, bei dem TypeB erwartet wurde". Aber Python tut es am besten, wenn man Soldat ist, etwas Undefiniertes tut, fehlschlägt und Ihnen dann einen nicht hilfreichen Fehler zurückgibt. Die Tatsache, dass wir darüber diskutieren müssen, ist einer der Gründe, warum ich Python oder seine Ententypisierungsphilosophie nicht mag.
quelle