2013-04-04 329 views
3

嘗試在DAT文件上寫入2個NumPy數組時遇到以下錯誤。ValueError:類型爲'str'的對象的未知格式代碼'f'

fo.write('{0:f} {1:f} \n'.format(np.array(p_initial),np.array(pv_za))) 
ValueError: Unknown format code 'f' for object of type 'str' 

完整的代碼可以在這裏找到:TypeError: can't multiply sequence by non-int of type 'float' : prblem with NumPy arrays

我很新到Python。如何將NumPy浮點數組寫入DAT文件,以便可以使用matplotlib或gnuplot進行繪圖?

+1

NumPy的不支持'.format()'尚未格式化,我不認爲。 NumPy還有*專用*支持將文件寫入文件,爲什麼要創建自己的文件? – 2013-04-04 08:41:31

+0

在我看來,'np.array(p_initial)'和'np.array(pv_za)'是字符串,而不是浮點數。 – 2013-04-04 08:41:54

+1

@InbarRose:不,它們被轉換爲字符串,因爲它們沒有'__format__'鉤子。 – 2013-04-04 08:42:23

回答

0

的最簡單方式與numpy.savetxt

import numpy as np 
a = np.arange(5) 
b = np.arange(5) + 2 
np.savetxt('test.txt', np.array([a,b]).T, '%f') 

給出:

0.000000 2.000000 
1.000000 3.000000 
2.000000 4.000000 
3.000000 5.000000 
4.000000 6.000000 
-1

請嘗試以下方法:

import itertools as i 
import numpy as np 
>>> '{0:f} {1:f}'.format(*i.chain(np.array([123]), np.array([234]))) 
'123.000000 234.000000' 
+0

請給我提供信息爲什麼我的回答後版本沒有用。 – 2013-04-04 08:47:42

+0

我沒有投下你的答案Marcin!...那個錯誤沒有顯示,現在我再次得到錯誤我正在'pv_za.append(K * np.sin(K * pv_za_temp)) TypeError:can' ('(')( – Moksha 2013-04-04 09:05:42

+0

)這是行不通的,因爲OP想要在一行中打印整個數組,而不是數組元素。 – tiago 2013-04-04 13:25:15

相關問題