使用.format()在NumPy结构化数组和本机字符串格式中浮动

使用.format()在NumPy结构化数组和本机字符串格式中浮动,numpy,string-formatting,record,Numpy,String Formatting,Record,有人能告诉我为什么这个NumPy记录在Python的新样式字符串格式上有问题吗?记录中的所有浮动都在“{:f}”上阻塞。格式化(记录) 谢谢你的帮助 In [334]: type(tmp) Out[334]: numpy.core.records.record In [335]: tmp Out[335]: ('XYZZ', 2001123, -23.823917388916016) In [336]: tmp.dtype Out[336]: dtype([('sta', '|S6'), (

有人能告诉我为什么这个NumPy记录在Python的新样式字符串格式上有问题吗?记录中的所有浮动都在
“{:f}”上阻塞。格式化(记录)

谢谢你的帮助

In [334]: type(tmp)
Out[334]: numpy.core.records.record

In [335]: tmp
Out[335]: ('XYZZ', 2001123, -23.823917388916016)

In [336]: tmp.dtype
Out[336]: dtype([('sta', '|S6'), ('ondate', '<i8'), ('lat', '<f4')])

# Some formatting works fine
In [337]: '{0.sta:6.6s} {0.ondate:8d}'.format(tmp)
Out[337]: 'XYZZ    2001123'

# Any float has trouble
In [338]: '{0.sta:6.6s} {0.ondate:8d} {0.lat:11.6f}'.format(tmp)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/Users/jkmacc/python/pisces/<ipython-input-338-e5f6bcc4f60f> in <module>()
----> 1 '{0.sta:6.6s} {0.ondate:8d} {0.lat:11.6f}'.format(tmp)

ValueError: Unknown format code 'f' for object of type 'str'
[334]中的
:类型(tmp)
Out[334]:numpy.core.records.record
In[335]:tmp
Out[335]:('xyz',2001123,-23.823917388916016)
In[336]:tmp.dtype

Out[336]:dtype([('sta','S6'),('ondate','这个问题在NumPy用户邮件列表中的“floats被迫使用“{:f}”字符串”下得到了回答。format()?”:

似乎np.int64/32和np.str继承了各自的本机Python
\uuuuuuu format\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

In [8]: '{:6.6s} {:8d} {:11.6f}'.format(tmp.sta, tmp.ondate, float(tmp.lat))
Out[8]: 'XYZZ    2001123  -23.820000'
谢谢

-乔恩

编辑: np.float32/int32继承自本机Python类型如果系统是32位的,则继承自本机Python类型。与64位相同。不匹配将产生与原始post相同的问题