将字符串列表转换为预设dtype

时间:2015-05-01 19:16:55

标签: python arrays numpy

我有一个字符串 string_list 的列表,我希望将其转换为预先指定的dtype的1元素结构化numpy数组:

string_list = ['123', '45', '6.7']
my_dtype = np.dtype([('a','i4'),('b','f4'),('c','f8')])

我想要的输出结果是:

array([(123, 45., 6.7)], dtype=[('a', '<i4'), ('b', '<f4'), ('c', '<f8')])

此转换是否有 np.astype 语法技巧?

2 个答案:

答案 0 :(得分:1)

输入&#39;行&#39;结构数组是元组:

In [464]: np.array([tuple(string_list)],dtype=my_dtype)
Out[464]: 
array([(123, 45.0, 6.7)], 
      dtype=[('a', '<i4'), ('b', '<f4'), ('c', '<f8')])

另一个有用的技巧是创建所需dtype的空数组,并一次填写一个字段。或者使用元组逐行填充,或者使用元组列表填充多行。

答案 1 :(得分:1)

编辑请参阅@hpaulj回答。列表必须转换为元组,列表生成错误。

和我一起工作,这就是你想要的吗?

string_list = ('123', '45.', '6.7')
b = np.array([string_list], dtype=[('a', '<i4'), ('b', '<f4'), ('c', '<f8')])

numpy版本1.8.2