Python: TypeError: unsupported operand type(s) de /: 'float' et 'liste'
Je suis en train de faire un trapz de l'intégration, avec une fonction à l'aide de 2 listes et 1 numpy.ndarray
. Elle ne fonctionne pas, et je ne peux pas savoir si j'ai besoin de convertir mes listes à un autre type de données. Je suis heureux que la fonction est correcte, mais je ne suis pas sûr de savoir comment procéder?
La fonction est:
BB_flux = trapz((1./lamz)*flux*T,x=lamz)/trapz((1./lamz)*T,x=lamz)
où T
et lamz
sont des listes et des flux
est un ndarray que j'ai fait par interpolation.
Les deux T
et lamz
sont faites par la lecture à partir d'un fichier csv, puis en ajoutant les valeurs de T
et lamz
flotteurs.
- Le message d'erreur est assez clair sur le problème - qu'attendiez-vous de l'issue, par exemple, de
1./lamz
être? - Im censé simplement obtenir un grand nombre comme la valeur de BB_flux. Est-il un type de données qui trapz préfère? car aucun des autres variables sont des flotteurs donc je ne suis pas sûr de savoir comment l'erreur est
- Vous essayez de diviser la valeur
1.
par une banale liste python, ce qui n'est pas pris en charge. Vous attendiez-vous à le résultat sera une liste de chars? Pour les atteindre, vous devez utiliser une liste de compréhension:[1./x for x in lamz]
. - Je suis d'accord avec @ekhumoro. Sinon, vous pouvez faire
lamz = np.array(lamz)
avant la ligne, alors vous n'avez pas besoin de changer cela. Mais @ekhumoro la solution est plus propre!
Vous devez vous connecter pour publier un commentaire.
Python ne supporte pas l'opération arithmétique (/,*,+,-) sur les listes.
Les opérateurs + et * sont des opérations dans la liste.
Puisque vous utiliser numpy, vous pouvez convertir vos listes de tableaux numpy.
Si vous voulez garder lamz et T sous forme de listes, vous pouvez utiliser