首页 > 解决方案 > 如何从课堂打印数据

问题描述

我是 python 新手,我尝试创建一个类,将 3 个值(channel, mDM, crossec)放入从 .dat 生成的数据中,使其类似于 (x, y) 值,以使卡方拟合。现在我尝试打印以查看数据,但没有显示

我的类代码文件名 DMM.py。我试试这个

from DMM import cal

channel = str(input("Enter channel "))
mDM = int(input("Enter mDM "))
crossec = int(input("Enter crossecn "))

y = cal(channel, mDM, crossec)

print(y)

它打印出来

Enter channel t
Enter mDM 150
Enter crossec 1
<DMM.cal object at 0x00FAEBD0>

我尝试从互联网上阅读但仍然不明白

fnames = 'AtProductionNoEW_gammas.dat'
data = np.genfromtxt(fnames, names=True, dtype=None)
mass_vals = data["mDM"]

class cal():

    def __init__(self, channel, mDM, crossec):

        self.channel = channel
        self.mDM = mDM
        self.crossec = crossec

        index = np.where(np.abs(mass_vals - self.mDM)/mass_vals < 0.0001)

        xvals = data["Log10x"][index]

        fluxs = data[self.channel][index]/xvals

        loadspec = interp1d(xvals, fluxs)

        def dNdx(x):
            fluxval = loadspec(x)
            if (fluxval<0):
                return 0
            else:
                return loadspec(x)*/(8*pi*self.mDM**2)*self.crossec

我希望输出像

1, 2
2, 5
7, 8
9, 15
11, 25
...

标签: python

解决方案


y 是您的 cal 对象,实际上 print(y) 打印了对象字符串表示形式。

我相信您想打印必须添加到类中的方法的输出。目前你没有方法,只有一个内部函数 dNdx()。


推荐阅读