我有一个字符串 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 语法技巧?
答案 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