在构造结构化/重新排列时,我对类型转换的行为感到困惑:
这个简单的示例接受数字字段,但将类型定义为字符串:
data = [(1.0, 2), (3.0, 4)] np.array(data, dtype=[('x', str), ('y', int)])
哪个产生:
array([('', 2), ('', 4)], dtype=[('x', 'S'), ('y', '所以这些值被转换为空字符串,这不是你所期望的:
str(1.0)哪个产生字符串
'1.0'
.是什么导致了这种行为?
1> hpaulj..:您需要指定字符串宽度,例如'a3':
>>> np.array([(1.0, 2),(3.0,4)],dtype=[('x','a3'),('y',int)]) array([('1.0', 2), ('3.0', 4)], dtype=[('x', 'S3'), ('y', '只是
str
有效地使用意味着一个0字节的字符串字段 - 当然这个字段太小而不能保存float的字符串再现.