我有这段代码来读取Fortran保存的数值。该数据有4800行和19列。
此数据的头部如下所示
1 2 1.50000000 0.00000000 1 21 240 361 2 0 0 0 0 0 0 0 0 0 0
2 2 1.50000000 0.00000000 1 19 208 390 7 0 0 0 0 0 0 0 0 0 0
3 2 1.50000000 0.00000000 1 13 181 419 11 0 0 0 0 0 0 0 0 0 0
4 2 1.50000000 0.00000000 1 17 213 386 8 0 0 0 0 0 0 0 0 0 0
5 2 1.50000000 0.00000000 1 18 215 389 2 0 0 0 0 0 0 0 0 0 0
6 2 1.50000000 0.00000000 1 18 245 356 5 0 0 0 0 0 0 0 0 0 0
7 2 1.50000000 0.00000000 1 17 205 395 7 0 0 0 0 0 0 0 0 0 0
8 2 1.50000000 0.00000000 1 21 251 350 2 0 0 0 0 0 0 0 0 0 0
9 2 1.50000000 0.00000000 1 17 207 385 15 0 0 0 0 0 0 0 0 0 0
10 2 1.50000000 0.00000000 1 10 142 439 33 0 0 0 0 0 0 0 0 0 0
11 2 1.50000000 0.00000000 1 19 249 353 3 0 0 0 0 0 0 0 0 0 0
列的名称是,sim,感染,beta,epsilon。其他15列“countt”只是模拟结果。我写了这段代码来读取F90中的数据。
program read
implicit none
integer, dimension(4800,15)::countt
integer :: i
integer ,dimension(4800)::sim, infected,id
real,dimension(4800):: epsilon, beta
open(unit = 2, file = '/Dropbox/epi_data.txt', status = 'old', action = 'read')
do i = 1,4800
read(2,*) sim(i), infected(i), beta(i), epsilon(i), countt(i,:)
print*, sim(i), infected(i), beta(i), epsilon(i), countt(i,:)
end do
close(2)
end program read
当我运行此代码时,我收到此错误“Fortran运行时错误:列表输入中项目3的错误整数 “
我在这里缺少什么?
我遇到的另一个问题是,如果我想将训练集保存100,我该怎么办。我的意思是,保存100行并跳过100,保存100并跳过100直到行结束? 所以在我的4800年结束时,我将获得2400训练集。
我是否需要上传此问题的数据?
答案 0 :(得分:3)
您尝试在第三列中读取整数值(infected
的类型为integer
)。但是,1.50000000
之类的格式不是整数(它们是实数)。因此错误。
您可能需要更改列的顺序或读取方式,即删除id(i),
。
答案 1 :(得分:0)
您必须重新格式化* .txt文件。
Fortran使用dot"。"作为十进制分隔,例如1.50000000是" 1.5",不是" 150000000"。