我有一组数据格式如下:
名称q1 q2 q3
ER_1 0 0 0
ER_2 0 0 0
我编写了一个代码,通过读取此数据表进行计算,然后如果特定计算涉及ex:ER_1中提到的名称之一,则q1,q2和q3将更新。我能够这样做并修改表格,除了我以相同的格式保存它有困难。这是我的尝试,结果是一个txt文件,其中所有元素都在一行中,即:name,q1,q2,q3,ER_1,0,0,0,ER_2,0,0,0
data=numpy.loadtxt('table.txt', dtype=str,usecols=(0,1,2,3,4))#,unpack=True)
NAME='ER_1'
lst=[0,1,2]
for i in lst:
if NAME in data[i][0]:
data[i][1] = '27'
data.tofile('newdata.txt',sep=',')
请求的代码:
所以你需要制作一个名为 - massout.txt的文本文件,如下所示:
Source M_ratio R_ratio B_ratio F_tot F_red F_blue c3
ER_1 0 0 0 0 0 0 0
ER_2 0 0 0 0 0 0 0
然后只需复制并运行它:
massout=numpy.loadtxt('massout.txt', dtype=str,usecols=(0,1,2,3,4,5,6,7))#,unpack=True)
source='ER_1'
lst=[0,1,2]
for i in lst:
if source in massout[i][0]:
massout[i][1] = '27'
numpy.savetxt('newdata.txt', massout, delimiter='', fmt='%s\n' )
答案 0 :(得分:1)
tofile
方法将数据写成“扁平化”。它将元素按顺序写入文件,丢失有关数组的任何形状信息。
您对函数numpy.savetxt
的使用需要进行一些调整。要使用空格分隔字段,请使用delimiter=' '
(这是空格字符,而不是空字符串)。不要在'\n'
参数中包含fmt
。以下适用于我:
numpy.savetxt('newdata.txt', massout, delimiter=' ', fmt='%s')
P.S。使用2-d numpy数组,将数组索引为massout[i, j]
而不是massout[i][j]
更有效且更具风格。也就是说,你应该写
massout[i, 1] = '27'
而不是
massout[i][1] = '27'