2
我想投我已经定义了一个numpy的矩阵:NumPy的混合型矩阵astype
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']})
现在,我会考虑矩阵所有字符串,因为它不起作用,bu T为预期的这样'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模块为每个矩阵列定义类型?
的这一个接近示出的矩阵。我的问题与2d数组有关,在我的情况下,它的形状应该是(3,4)而不是(3) – ePascoal
但是'dtype'指定了4个字段,并且源中只有4列数据。你是否想将值复制到新的2d数组的每一列? – hpaulj
请不要考虑我的dtype,主要问题是'如何使用numpy模块为每个矩阵列定义类型?' – ePascoal