【发布时间】:2015-05-09 15:29:43
【问题描述】:
我正在尝试转换我已经定义的 numpy 矩阵:
matrix = numpy.array([['name','23','45','1'],
['name2','223','43','5'],
['name3','12','33','2']])
导致:
array([['name1', '23', '45', '1'],
['name2', '223', '43', '5'],
['name3', '12', '33', '2']],
dtype='|S5')
我想命名矩阵的每一列并将其转换为以下类型:
dt = numpy.dtype({'names':['name','x','y','n'],'formats': ['S10', 'S10', 'S10', 'S10']})
现在,我将考虑矩阵所有字符串,因为它不起作用,但是像 'formats': ['S10', 'f3', 'f3', 'i'] 这样的格式是预期的
并做这样的事情:
matrix.astype(dtype=dt,casting='safe')
结果:
array([[('name', 'name', 'name', 'name'), ('23', '23', '23', '23'),
('45', '45', '45', '45'), ('1', '1', '1', '1')],
[('name2', 'name2', 'name2', 'name2'), ('223', '223', '223', '223'),
('43', '43', '43', '43'), ('5', '5', '5', '5')],
[('name3', 'name3', 'name3', 'name3'), ('12', '12', '12', '12'),
('33', '33', '33', '33'), ('2', '2', '2', '2')]],
dtype=[('name', 'S10'), ('x', 'S10'), ('y', 'S10'), ('n', 'S10')])
我错过了什么?如何使用 numpy 模块为每个矩阵列定义类型?
【问题讨论】: