7

我正在尝试将几行写入文本文件,这是我使用的代码:

import numpy as np

# Generate some test data
data = np.arange(0.0,1000.0,50.0)

with file('test.txt', 'w') as outfile:      
    outfile.write('# something')

    for data_slice in data: 
        np.savetxt(outfile, data_slice, fmt='%1.4e')

        outfile.write('# New slice\n')

当代码运行到 savetxt 行时,我收到此错误:

     IndexError: tuple index out of range

知道为什么会这样吗?我尝试删除“fmt”部分,但我得到了同样的结果。

4

1 回答 1

7

问题是 numpy.save 期望一个包含一些形状信息的数组,而您只传递一个数字。

如果您想同时传递一个元素(但我建议您保存整个数组),您必须先将其转换为形状至少为 1 的 numpy 数组

np.savetxt(outfile, array(data_slice).reshape(1,), fmt='%1.4e')

这是因为单个数字的形状是一个空元组,并且要写入文件,它会尝试沿第一维拆分

array(1).shape == tuple()
#True

要保存整个数组就足够了:

np.savetxt(outfile, data, fmt='%1.4e')
于 2012-11-06T17:08:45.797 回答