numpy.savetxt() - 将字符串写入文本文件

时间:2016-09-22 18:34:30

标签: python numpy

我正在尝试使用numpy.savetxt()将两个字符串写入.txt文件。我希望字符串在连续的行上。但是,当我运行我的代码时,我收到以下错误:

ncol = X.shape[1]

IndexError: tuple index out of range  

这发生在我调用np.savetxt()的第一行。我的代码如下:

import numpy as np

data=np.loadtxt('data.txt')
name1 = 'James'
name2 = 'James 2'

hi = 'Hello {}'.format(name1)
bye  = 'Goodbye {}'.format(name2)

np.savetxt('greet.txt', hi, fmt="%s", newline='\n')
np.savetxt('greet.txt', bye, fmt="%s")

我已经尝试过没有fmt,将'%s'更改为其他内容,但它们都给了我同样的错误。谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

根据@ moses-koledoye评论和@jvnna的回答,以下是正确的答案。

hibye变量的类型为string

hi = 'Hello {}'.format(name1)
bye  = 'Goodbye {}'.format(name2)

根据文档,您正在尝试使用numpy函数np.savetxt将它们保存到txt文件中。

  

将数组保存到文本文件。

因此hibye变量必须的类型为np.array,以便使用该函数进行处理。另外,还需要一些重塑。

实现此目的的代码段代码可能是:

hi = 'Hello {}'.format(name1)
bye  = 'Goodbye {}'.format(name2)

hi = np.array(hi).reshape(1, )  # This does the trick for hi
bye  = np.array(bye).reshape(1, ) # This does the trick for bye

np.savetxt('greet.txt', hi, fmt="%s", newline='\n')
np.savetxt('greet.txt', bye, fmt="%s")