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()
Je ne sais tout simplement pas comment résoudre mon problème. Il n'arrête pas de dire:
m=math.log10(abs(x))
TypeError: only length-1 arrays can be converted to Python scalars
Les fonctions non numériques telles que math.abs()
ou math.log10()
ne fonctionnent pas correctement avec les tableaux numpy. Il suffit de remplacer la ligne qui génère une erreur avec:
m = np.log10(np.abs(x))
En dehors de cela, l'appel np.polyfit()
ne fonctionnera pas car il manque un paramètre (et vous n'affectez pas le résultat pour une utilisation ultérieure de toute façon).
Voici un autre moyen de reproduire cette erreur en Python2.7 avec numpy:
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)
La méthode np.concatenate
génère une erreur:
TypeError: only length-1 arrays can be converted to Python scalars
Si vous lisez la documentation autour de numpy.concatenate , alors vous vous attendez à ce qu'il attende un nuage d'objets numpy. Donc entourant les variables avec des parenthèses corrigé:
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)
Ensuite, il imprime:
[1 2 3 4 5 6]
Que se passe-t-il ici?
Cette erreur est un cas d'implémentation en bulle - elle est causée par la philosophie de typage de canard de python. Il s’agit d’une erreur de bas niveau cryptique python vomir quand elle reçoit des types de variables inattendus, tente de s’exécuter et fait quelque chose, s’achève, les pukes, tente une action corrective, échoue, puis indique vous que "vous ne pouvez pas reformuler les réponses du sous-espace lorsque le vent souffle de l'est mardi".
Dans des langages plus sensibles comme C++ ou Java, il vous aurait dit: "vous ne pouvez pas utiliser un TypeA alors que TypeB était attendu". Mais Python fait de son mieux pour persévérer, fait quelque chose d'indéfini, échoue, puis vous restitue une erreur inutile. Le fait que nous devions en discuter est l'une des raisons pour lesquelles je n'aime pas Python, ni sa philosophie de typage des canards.