如何在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
采样点
将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
)