我想将以下信息写入.txt文件:
D = 68601
w = 1500
NNZ = 205806000
docword = [[ 0 170 4]
[ 0 1856 4]
[ 0 838 3]
...
[68601 1982 0]
[68601 1981 0]
[68601 0 0]]
这是最终的.txt文件的样子 - 替换数字:
D
W
NNZ
docID wordID count
docID wordID count
docID wordID count
docID wordID count
...
docID wordID count
docID wordID count
docID wordID count
我试过这个:
datafile_path = "/path/to/docword.txt"
with open(datafile_path, 'w+') as datafile_id:
np.savetxt(datafile_id, data, fmt=['%d','%d','%d'], newline="\n")
还有这个:
with open('/path/to/docword.txt', 'ab') as outfile:
for data_slice in data:
np.savetxt(outfile, data_slice, fmt=['%d','%d','%d'])
它需要永远,并没有做我想要的,也保存它作为泡菜不是我想要的。我希望能够打开文本文件,并能够在那里看到相同的格式,一行3行,然后是3列的行。
答案 0 :(得分:1)
如果您尝试使用numpy.savetxt
,则只需传递文件路径即可 - 无需打开文件。
查看函数doc page末尾的示例。
您想要执行以下操作:
datafile_path = "/path/to/docword.txt"
np.savetxt(datafile_path, data, fmt='%d %d %d', newline="\n")
答案 1 :(得分:0)
以下是将数据写入文件的示例代码,这是否符合您的期望?
D = 68601
w = 1500
NNZ = 205806000
docword = [[1, 2, 3], [4, 5, 6]]
text_file = open("Output.txt", "w")
text_file.write(str(D) + '\n')
text_file.write(str(w) + '\n')
text_file.write(str(NNZ) + '\n')
for row in docword:
for el in row:
text_file.write(str(el) + '\t')
text_file.write('\n')
text_file.close()
输出文件内容:
68601
1500
205806000
1 2 3
4 5 6
答案 2 :(得分:0)
一个非常简单的方法是使用for循环。虽然numpy必须存在更好的解决方案。
import numpy as np
mat = np.arange(9).reshape(3,3)
n= mat.shape[0]
file = open("file.txt", "w")
for i in range(0, n):
line = mat[i:i+1]
file.write(str(line).strip("[").strip("]")+"\n")
file.close()
输出:
0 1 2
3 4 5
6 7 8