更多的錯誤消息:
-> 1162 % (str(X.dtype), format))
1163 if len(footer) > 0:
1164 footer = footer.replace('\n', '\n' + comments)
TypeError: Mismatch between array dtype ('object') and format specifier ('%.18e,%.18e,%.18e,%.18e,%.18e,%.18e,%.18e,%.18e,%.18e')
savetxt
是迭代的rsf
行,併爲每個試圖創建一個字符串,它可以寫到文件。如果沒有fmt
規範,它會嘗試按列數重複的默認格式。這是format specifier
。
這是一個基本的Python字符串格式問題。
In [264]: row=rsf[1,:]
In [265]: row
Out[265]: array(['FREQ', 8, 9, 10, 11, 12, 13, 14, 15], dtype=object)
In [266]: '%s, %d, %d, %d, %d, %d, %d, %d, %d'%tuple(row)
Out[266]: 'FREQ, 8, 9, 10, 11, 12, 13, 14, 15'
,所以你需要調用savetxt
的東西,如:
In [267]: fmt='%s, %d, %d, %d, %d, %d, %d, %d, %d'
In [268]: np.savetxt('test.txt',rsf,fmt=fmt)
In [269]: cat test.txt
FREQ, 0, 1, 2, 3, 4, 5, 6, 7
FREQ, 8, 9, 10, 11, 12, 13, 14, 15
FREQ, 16, 17, 18, 19, 20, 21, 22, 23
FREQ, 24, 25, 26, 27, 28, 29, 30, 31
...
,或者你可以簡單地用通用的「%s」的
In [270]: np.savetxt('test.txt',rsf,fmt='%5s',delimiter=',')
In [271]: cat test.txt
FREQ, 0, 1, 2, 3, 4, 5, 6, 7
FREQ, 8, 9, 10, 11, 12, 13, 14, 15
FREQ, 16, 17, 18, 19, 20, 21, 22, 23
FREQ, 24, 25, 26, 27, 28, 29, 30, 31
FREQ, 32, 33, 34, 35, 36, 37, 38, 39
我懷疑的格式,這是去上班。 'np.savetxt'意味着被'np.loadtxt'加載,並且通常不可能加載未知的數據類型。爲什麼要將相同的字符串添加到每行的第一列? – user545424