Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中集成文本文件中的数据?_Python_Scipy - Fatal编程技术网

如何在python中集成文本文件中的数据?

如何在python中集成文本文件中的数据?,python,scipy,Python,Scipy,我想对文本文件中的数据进行双重集成。有人能帮我吗?这是我的数据。我想要第二列的集成: 0.96 2.05 1.52 2.25 2.0 2.36 2.5 2.41 2.96 2.41 3.52 2.43 4.0 2.39 5.04 2.31 6.08 2.25 7.04 2.12 8.08 2.07 从scipy导入集成 将numpy作为np导入 data=np.loadtxt(“A_mod_intensity.txt”)

我想对文本文件中的数据进行双重集成。有人能帮我吗?这是我的数据。我想要第二列的集成:

0.96    2.05
1.52    2.25
2.0     2.36
2.5     2.41
2.96    2.41
3.52    2.43
4.0     2.39
5.04    2.31
6.08    2.25
7.04    2.12
8.08    2.07 
从scipy导入集成
将numpy作为np导入
data=np.loadtxt(“A_mod_intensity.txt”)
扩展数据,yData=np.hsplit(数据,2)
x=扩展数据[:,0]
y=yData[:,0]
集成simps(y)
首先根据需要提供
x
值,如
integrate.simps(y,x)
,否则如果没有
x
,则假定
x
0,1,2,3,4…

接下来,如果您需要双重集成(我认为您的意思是集成两次),您可以使用下面的代码。在这段代码中,我们对不定积分进行两次数值积分。整个范围内的定积分值将是数组中的最后一个值。你也可以

取第二个积分
  • 为了进行第二次积分,必须有一个函数进行第二次积分
  • 在答案的这一部分中,必须取函数的第二个积分,然后将数据传递给该结果。
    • 数据的第二个积分不是这里发生的
  • 从上一个文件中,有多个文件,从0度到180度,用于
    mT
    (毫特斯拉)中的磁场强度
  • 假设函数
    F(θ)=B*sin(θ)
    ,第二个积分是
    -B*sin(θ)
    • 然后可以将第二个积分应用于数据
      • df_dict.keys()
        中提取
        B
        作为
        intensity
        θ
      • 使用
        np.deg2rad
  • 此问题的数据框形状与上一个问题的数据框形状不同
将熊猫作为pd导入
将numpy作为np导入
从pathlib导入路径
#创建当前工作目录中文件的路径
p=Path.cwd()
#获取所有文件的生成器
files=list(p.glob('*.44V*'))
#将文件加载到pandas.DataFrames目录中
dfd={f'{file.suffix.split(“”)[-1]}”:pd.read_csv(file,sep='\\s+',header=None)用于文件中的文件}
#迭代dfd并为添加列
对于dfd.items()中的k,v:
#向数据中添加列标题
dfd[k]。列=['mag_字段','intensity']
#从关键点提取度值并转换为弧度
rad=np.deg2rad(int(k[:-3]))
#添加具有第二次积分计算的列
dfd[k]['intensity_integral']=-v.intensity*np.sin(rad)
#显示(dfd['10deg'].head())
磁场强度积分强度
0   269.2575     0.0785            -0.01363
1   269.2594     0.0836            -0.01452
2   269.2613     0.0887            -0.01540
3   269.2632     0.0849            -0.01474
4   269.2651     0.0900            -0.01563
通过
simps集成列:
  • 此时,问题在于数据的形状
  • yData
    是一个
    (11,1)
    数组,但需要是
    (1,11)
  • yData上使用
    • 使用沿给定轴的样本和复合辛普森规则对y(x)
进行积分
  • y
    :类似数组。要集成的阵列
  • x
    :类似阵列,可选。如果给定,
    y
    采样点
  • 来自scipy.integrate import simps的
    
    将numpy作为np导入
    #重塑水田
    y=yData。重塑((1,len(yData)))
    #整合
    simps(y)
    [out]:
    数组([23.00666667])
    
    使用
    x
    y
    • 此数据必须使用
      x
      y
      ,因为点的空间不均匀
    • 该函数跨阵列工作,而不是单个点
    y=yData.重塑((1,len(yData)))
    x=扩展数据。重塑((1,len(扩展数据)))
    simps(y,x)
    [out]:
    数组([16.212197])
    
    辛普森法则
    from scipy import integrate
    import numpy as np
    
    data = np.loadtxt("A_mod_intensity.txt")
    xData, yData = np.hsplit(data,2)
    
    x = xData[:,0]
    y = yData[:,0]
    
    res = y
    for i in range(2):
        res = np.array([
            integrate.simps(res[:cnt], x[:cnt]) for cnt in range(1, res.size + 1)
        ])
        print(
            'integrated', i + 1, 'times, definite integral value is', res[-1],
            ', indefinite integral values are', res
        )