如何在python中以txt文件保存大型数组
我有二维阵列:如何在python中以txt文件保存大型数组,python,arrays,Python,Arrays,我有二维阵列: 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
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文件中,类似于:
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
我在和中尝试了这些解决方案,但它对我不起作用Noor,让我猜猜-您正在使用windows记事本查看文件 我使用记事本+,它足够聪明,可以理解Unix样式的行尾,在通过
np.savetxt()
创建文件时(默认情况下)使用这些行尾,即使在windows下操作也是如此
调用savetxt
时,可能需要显式指定newline=“\r\n”
np.savetxt('file1.txt', output, fmt='%10d' ,header= " x y z", newline="\r\n")
Doku:
我不确定您的数据,但是:
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,格式类似
我没有考虑每个数字固定的10个字符的间距,我的错。Noor,让我猜猜,你是在用windows记事本查看文件吗 我使用记事本+,它足够聪明,可以理解Unix样式的行尾,在通过
np.savetxt()
创建文件时(默认情况下)使用这些行尾,即使在windows下操作也是如此
调用savetxt
时,可能需要显式指定newline=“\r\n”
np.savetxt('file1.txt', output, fmt='%10d' ,header= " x y z", newline="\r\n")
Doku:
我不确定您的数据,但是:
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,格式类似
我没有考虑每个数字固定10个字符的间距,我的错。这些解决方案在哪些方面失败了?假设每个字符1字节,数据的40mio*3*3个字符和间距大约为350mb—这不是一个太大的文件。@PatrickArtner:但是如果我们使用文本,它会使用分隔符(制表符和新行)和一些数据(例如浮点)可使用约10-20位数字。该数字较大,但不可用big@WillemVanOnsem当然,他的解调数据在99以下的整数范围内,我将其四舍五入;)只是想了解一下他的问题,这些解决方案在哪些方面会失败?假设每个字符有一个字节,那么40mio*3*3个字符的数据和间距大约为350mb—这不是一个太大的文件。@PatrickArtner:但如果我们使用文本,它会使用分隔符(制表符和新行)和一些数据(例如浮点)可使用约10-20位数字。该数字较大,但不可用big@WillemVanOnsem当然,他的解调数据在99以下的整数范围内,我将其四舍五入;)只是想了解一下他的问题谢谢Patrick Artner,你说得对,Notepad++和EmEditor,它们都以列和列的形式显示数组rows@Noor-指定使用的换行符和windows样式-将40.000.000字节添加到总文件大小;)谢谢,Patrick Artner,你说得对,Notepad++和EmEditor,它们都以列和列的形式显示数组rows@Noor-指定使用的换行符和windows样式-将40.000.000字节添加到总文件大小;)