我有2D数组:
import numpy as np
output = np.array([1,1,6])*np.arange(6)[:,None]+1
output
Out[32]:
array([[ 1, 1, 1],
[ 2, 2, 7],
[ 3, 3, 13],
[ 4, 4, 19],
[ 5, 5, 25],
[ 6, 6, 31]])
我尝试使用np.savetxt('file1.txt', output, fmt='%10d')
我的结果只有一行
如何将其保存在txt文件simillar中:
x y z
1 1 1
2 2 7
3 3 13
4 4 19
5 5 25
6 6 31
3个单独的列,每列有名称(x,y,z)
请注意:原始数组太大(40000000行和3列),我使用的是Python 3.6 我在here和here中尝试过这些解决方案但是,它不适用于我
答案 0 :(得分:1)
Noor,让我猜一下 - 您正在使用Windows记事本查看文件?
我使用的Notepad ++非常聪明,可以理解在np.savetxt()
创建文件时使用(默认情况下)的Unix风格的Lineendings,即使在windows下运行也是如此。
您可能希望在调用newline="\r\n"
时明确指定savetxt
。
np.savetxt('file1.txt', output, fmt='%10d' ,header= " x y z", newline="\r\n")
Doku:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.savetxt.html
我不确定您的数据,但是这个:
import numpy as np
output = np.array([1,1,6])*np.arange(60)[:,None]+1
print(output)
np.savetxt('file1.txt', output, fmt='%10d' ,header= " x y z")
生成此输出:
# x y z
1 1 1
2 2 7
3 3 13
=== snipped a few lines ===
58 58 343
59 59 349
60 60 355
对我来说。
对于np.arange(1000000),大约32MB大,格式相似......
对于np.arange(10000000),大约322MB大,格式相似......
willem-van-onsem 1 + Gb离得更近了。
我没有说明每个数字的固定10个字符的间距,我的不好。