从重新形成的numpy数组访问数据

时间:2014-07-28 08:53:03

标签: python numpy

我使用以下代码将统计值数组写入文本文件(行方式):

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

1 个答案:

答案 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]