这会导致出现错误:
import numpy as np
x = np.array([[1, 'O', 1]],
dtype=np.dtype([('step', 'int32'),
('symbol', '|S1'),
('index', 'int32')]))
TypeError: expected a readable buffer object
我不知道为什么会失败?
或者,我该如何强制使这样的语句生效?
x = np.array([[1, 'O', 1]])
那么
x.dtype = np.dtype([('step', 'int32'),('symbol', '|S1'),('index', 'int32')])
或者
x.view(dtype=np.dtype([('step', 'int32'),('symbol', '|S1'),('index', 'int32')]))
两者都给我
ValueError: new type not compatible with array.
编辑
如果我尝试将每条记录输入为元组,它会认为三元组是单个值,而不是三个单独的字段?例如:
import numpy as np
x = np.array([(1, 'O', 1)],
dtype=np.dtype([('step', 'int32'),
('symbol', '|S1'),
('index', 'int32')]))
看起来很好,但是当我执行以下操作时:
import numpy.lib.recfunctions as rec
rec.append_fields(x,'x',x['index']+1)
提供给我
TypeError: object of type 'numpy.int32' has no len()
可能是因为 x.shape
是 (1,) 而不是 (1,3)。
x['symbol']
的语法访问列。 - unutbu