我使用以下代码将统计值数组写入文本文件(行方式):
data_in = np.loadtxt('input_file.asc')
with open('output_file.txt', 'a+') as outfile:
values = data_in[:,1]
min_data = np.min(values)
max_data = np.max(values)
avg_data = np.mean(values)
stats = np.array([min_data, max_data, avg_data])
np.savetxt(outfile, stats.reshape(1,stats.shape[0]), delimiter=' ', newline='\n')
我想使用此代码读取多个data_in
文件,并将统计信息附加到'output_file.txt'
的新行中。我正在使用前一篇文章中建议的reshape
函数,因此每批统计信息都存储在一个新行中。
我的问题是当我想访问'output_file.txt'
中存储的数据以供以后绘图时。如果我使用:
stats_out = np.loadtxt('output_file.txt')
min_values = stats_out[:,0]
max_values = stats_out[:,1]
avg_values = stats_out[:,2]
我收到错误消息:IndexError: too many indices
是否因为我正在使用重塑功能而导致此错误?
多次运行脚本后output_file.txt
的示例是:
0.077 -0.330 0.303
0.107 -0.506 0.350
0.092 -0.548 0.405
0.138 -2.358 0.445
0.100 -0.461 0.337
input_file.asc
的一个例子:
-1492.292540 -87.984545 95.515548 NaN NaN 8.18
-1491.349103 -87.982864 93.908249 NaN NaN 10.55
-1490.405666 -87.979607 92.304869 NaN NaN 10.73
-1489.462227 -87.974784 90.707865 NaN 7.740 10.60
-1488.518791 -87.968404 89.119650 NaN NaN 10.18
-1487.575353 -87.960482 87.542539 NaN NaN 10.10
-1486.631915 -87.951037 85.978759 NaN NaN 10.11
答案 0 :(得分:1)
问题是您的输出文件只有一行。因此,使用stats_out = np.loadtxt('output_file.txt')
,您将只获得一个ondimensional数组。
如果你再调用stats_out[:,0]
,你将得到一个IndexError。
要解决此问题,您应该检查数据的维数,例如:
stats_out = np.loadtxt('output_file.txt')
if stats_out.ndim > 1:
min_values = stats_out[:,0]
max_values = stats_out[:,1]
avg_values = stats_out[:,2]
else:
min_values = stats_out[0]
max_values = stats_out[1]
avg_values = stats_out[2]