python numpy.savetxt(),np.column_stack保存(多行/列)数据

官网解释:https://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html

第一部分

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)[source]

fname可以是一个文件路径,比如要保存在/home/test/text.txt,(注意一定要先建一个空的text.txt文件,好吧,似乎不需要),fmt是存储的格式,比如

%d  #整型
%.2f #浮点型保留两位小数
delimiter  #分隔符,默认是一个空格

举例:
要保存2*2矩阵

mymatrix = mat([[1,2],[2.3,4.4]])
np.savetxt(r'/home/test/text.txt',mymatrix,fmt='%.2f')

结果如下:
这里写图片描述
当然也可以第一列为整数,第二列为保留两位小数,只要将上面改为:

fmt='%d %.2f'  #注意是空格,如果是逗号则列之间以逗号隔开,分号,句号等等则以分号,句号隔开

例外,可以将空格改为逗号隔开,即

np.savetxt(r'/home/test/text.txt',mymatrix,fmt='%.2f',delimiter=",")  #或逗号之后加空格,即", "

另外,也可以将mymatrix改为np.column_stack(mymatrix)即将所有数据都列为一行。

第二部分:保存多行/列数据

相同维数

例:
生成列:np.column_stack()扩展列

import numpy as np
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])
c = np.array([9,10,11,12])
np.savetxt(r'/home/test.txt', np.column_stack((a,b,c)),fmt='%d')
#第一列和第二列为整数,第三列保留4位小数
#np.savetxt(r'/home/test.txt', np.column_stack((a,b,c)),fmt='%d %d %.4f')
>>>cat test.txt
1 5 9
2 6 10
3 7 11
4 8 12

python numpy.savetxt(),np.column_stack保存(多行/列)数据_第1张图片
python numpy.savetxt(),np.column_stack保存(多行/列)数据_第2张图片
上面是将a,b,c生成列,要求a,b,c都是相同的行数。
提取的时候使用:

data = np.loadtxt(r'/home/test.txt')
#提取第一行
data[0,:] #or data[0]
#提取第一列
data[:,0]

生成行:np.row_stack()扩展行

import numpy as np
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])
c = np.array([9,10,11,12])
np.savetxt(r'/home/test.txt',(a,b,c),fmt='%d')


1 2 3 4
5 6 7 8
9 10 11 12

虽然看上去12跟上面的8,4不在一行,但实际上是同一行的。
上面同样要求a,b,c里面的维数相同。

第三部分:保存多个数组为一行/列

np.savetxt(r'/home/test.txt',np.r_[a,b,c],fmt='%d')
#or
#通过改成list相加,注意不能用array相加,否则会将数据相加
#np.savetxt(r'/home/test.txt',(list(a)+list(b)+list(c)),fmt='%d')
1
2
3
4
5
6
7
8
9
10
11

你可能感兴趣的:(python,numpy)