numpy.savetxt "tuple index out of range"?

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”部分,但是结果还是一样。

1
为什么不直接使用np.savetxt(outfile, data, fmt='%1.4e')呢? - EnricoGiampieri
可以的!我最初想到的是通过for循环多次运行,每次循环时在右侧添加一个新列。这样做可能吗?谢谢! - ylangylang
我已经给你一个完整的回复,如果足够了,请随意将其设置为你对问题的答案。 - EnricoGiampieri
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')

应该使用np.array而不是上面的array。 - jaamit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接