IndexError:tuple索引超出范围并写入txt文件

时间:2016-04-26 13:09:20

标签: python arrays numpy

我有我的代码

import numpy as np

a1=np.empty(10)
a1.fill(1900)

a2=np.empty(10)
a2.fill(3100)

a3=np.empty(10)
a3.fill(3600)

with open('homes.txt', 'w') as f:
    for i in a1:
        for j in a2:
            for k in a3:
               np.savetxt(f, i, j,k)

我想将数组写入文本文件,如此

1900. 3100. 3600. 
1900. 3100. 3600. 
1900. 3100. 3600. 

但终端给了我

Traceback (most recent call last):
  File "m84.py", line 16, in <module>
    np.savetxt(f, i, j,k)
  File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 1034, in savetxt
    ncol = X.shape[1]
IndexError: tuple index out of range

如果我的想法是错误的,那么有人会提出其他解决方案。

1 个答案:

答案 0 :(得分:1)

您可以通过正常写入文件来完成此操作:

with open('homes.txt', 'w') as f:
    for i in a1:
        for j in a2:
           for k in a3:
               f.write("%f %f %f\n"%(i,j,k))

但是,我怀疑你并不是真的想要这样做,因为这会打印1000行(因为嵌套循环)。如果您只想在一个文件中编写数组,一旦您可以使用savetxt编写每个值,并且您不需要将它放在循环中。它可以一次写一个完整的数组,所以你可以这样做:

a = np.empty(shape = (10,3))
a[:,0].fill(1900)
a[:,1].fill(3100)
a[:,2].fill(3600)
np.savetxt("homes.txt",a)