這給了我一個錯誤:如何創建一個numpy記錄數組?
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
我不知道爲什麼這會失敗?
Alternatlively,我怎麼能強迫這樣的語句來工作?
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的形狀爲(1)而不是(1,3)? – hatmatrix
這就是定義結構化數組時應該得到的結果。您可以使用如下語法訪問列:'x ['symbol']' – unutbu
謝謝我將附加字段作爲單獨問題發佈。 – hatmatrix