难以理解错误信息

2024-09-30 14:24:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试运行下面的代码,其中Bwavelength、吞吐量和newflux是列表。在

def ABconversion(Bwavelength, throughput):
    ABconstant=[]

    c=3e18
    i=0
    for i in range(0, len(Bwavelength)):
        ABconstant.append(((3e18/((Bwavelength[i])**2))*throughput[i]))
        i+=1
        print len(Bwavelength), len(ABconstant), ABconstant
        a=Bwavelength[0]
        b=Bwavelength[-1]
        h=((b-a)/len(Bwavelength))
        ABflux = numpy.trapz(Bwavelength, ABconstant, h)
        return ABflux

 def ABmagnitude(newflux, ABflux):
    ABmagarray=[]
    for i in range(len(newflux)):
        ABmag = -2.5*log10((newflux[i])/ABflux) - 48.6
        ABmagarray.append(ABmag)
    return ABmagarray

ABflux1 = ABconversion(Bwavelength, throughput)
print ABflux1
ABmagarray = ABmagnitude(z, ABflux1)
print epoch, ABmagarray

z在文件的前面定义,也是一个列表。在

但是,当我运行这个程序时,我得到的信息是:

^{pr2}$

我不太理解这个错误(我对编程相当陌生),但我认为这意味着这两个“形状”的尺寸不一样。我不知道为什么会这样。在

提前谢谢。在


Tags: in列表forlendefrangeprintthroughput
2条回答

替换:

numpy.trapz(Bwavelength, ABconstant, h)

有:

^{pr2}$

根据this documentationtrapz(y, x, dx, axis)的参数是:

  • y-类数组-要集成的输入数组。在
  • x-可选数组-如果x为None,则所有y元素之间的间距为dx。在
  • dx-可选标量-如果x为None,则假定dx给出的间距。默认值为1。在
  • axis-可选Int-指定轴。在

所以您不应该同时指定x和{}-其中一个应该是None。在

也许这就是你想要的:trapz(Bwavelength, None, h)。在

有关错误消息和NumPy的“braodcasting规则”的详细信息,请参见this answer。在

相关问题 更多 >