2013-04-04 98 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

相关问题