[英]Maintain strings when converting python list into numpy structured array
我有一个如下所示的数据结构:
data = [ ('a', 1.0, 2.0),
('b', 2.0, 4.0),
('c', 3.0, 6.0) ]
我想使用numpy将其转换为结构化数组。 但是,当我尝试以下操作时,我会保留浮动但是我丢失了字符串信息:
import numpy
x = numpy.array(data, dtype=[('label', str), ('x', float), ('y', float)])
print x
导致:
>>> [('', 1.0, 2.0) ('', 2.0, 4.0) ('', 3.0, 6.0)]
任何人都可以解释为什么会发生这种情况,以及我如何保留字符串信息?
如果打印出阵列并仔细查看,则可以看到问题:
>>> numpy.array(data, dtype=[('label', str), ('x', float), ('y', float)])
array([('', 1.0, 2.0), ('', 2.0, 4.0), ('', 3.0, 6.0)],
dtype=[('label', '|S0'), ('x', '<f8'), ('y', '<f8')])
第一个字段的数据类型为'|S0'
- 零宽度字符串字段。 使字符串字段更长 - 这是一个2字符串字符串字段:
>>> numpy.array(data, dtype=[('label', 'S2'), ('x', float), ('y', float)])
array([('a', 1.0, 2.0), ('b', 2.0, 4.0), ('c', 3.0, 6.0)],
dtype=[('label', '|S2'), ('x', '<f8'), ('y', '<f8')])
你也可以这样来做,如记录在这里 :
>>> numpy.array(data, dtype=[('label', (str, 2)), ('x', float), ('y', float)])
array([('a', 1.0, 2.0), ('b', 2.0, 4.0), ('c', 3.0, 6.0)],
dtype=[('label', '|S2'), ('x', '<f8'), ('y', '<f8')])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.