我正在尝试进行 trapz 集成,其中的函数使用 2 个列表和 1 numpy.ndarray
。它不起作用,而且我无法确定是否需要将列表转换为其他数据类型。我很高兴实际功能是正确的,但我不确定如何继续?
功能是:
BB_flux = trapz((1./lamz)*flux*T,x=lamz)/trapz((1./lamz)*T,x=lamz)
哪里T
和lamz
是列表和 flux
是我通过插值制作的 ndarray。
两者T
和lamz
通过读取 csv 文件然后将值附加到 T
来生成和lamz
作为 float 。
最佳答案
Python 不支持列表上的算术运算(/、*、+、-)。 运算符 + 和 * 是列表运算。
由于您使用 numpy,因此可以将列表转换为 numpy 数组。
如果您想将 lamz 和 T 保留为列表,您可以使用
w = numpy.asarray(T)/numpy.asarray(lamz)
BB_flux = trapz(w*flux,x=lamz)/trapz(w,x=lamz)
关于Python:类型错误:不支持的操作数类型: 'float' 和 'list',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26948931/