2016-10-13 30 views
2

的問題numpy.savetxt-將一列保存爲int,其餘爲浮點數?

所以我有一個2D陣列(151行,52列),我想保存爲使用np.savetxt文本文件。但是,我希望第一列的數字保存爲整數(1950,1951等),而其餘數據保存爲精度5(四捨五入)浮點數(2.7419,2.736等)。我無法弄清楚如何做到這一點。

守則

當我打印第一4行的陣列的輸出的& 3列,它看起來像這樣。

[[1950 2.7407 2.7396]

[1951 2.7419 2.736]

[1952 2.741 2.7374]

[1953 2.7417 2.7325]]

當我使用以下...

np.savetxt('array.txt',data,fmt="%1.4f") 

該數組將第一列保存爲ap recision 5像其他數據一樣的浮點數(1950.0000,1951.0000等)。當我嘗試指定不同的格式,因爲這樣...

np.savetxt('array.txt',data,fmt="%i %1.4f") 

我得到以下錯誤: 「ValueError異常:FMT有錯號碼的格式%:%I%1.4F」

問題

有沒有一種方法,我說保存第一列爲整數,其餘列爲浮點數?

回答

7

data有3列,所以你需要供應3 '%format' s。例如:

np.savetxt('array.txt', data, fmt='%i %1.4f %1.4f') 

應該工作。如果你有很多超過3列,你可以嘗試這樣的:

np.savetxt('array.txt', data, fmt=' '.join(['%i'] + ['%1.4f']*N)) 

其中N是需要浮點格式列數。

+0

第二溶液加入正是我需要的。謝謝! – ChristineB

0

您的fmt參數需要與您嘗試格式化的列的數量相同%。您正嘗試格式化3列,但只給出2種格式。

試着改變你的np.savetxt(...)

np.savetxt('array.txt',data,fmt="%i %1.4f %1.4f")