これは私にエラーを与える: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
これが失敗した理由を私は知らないのですか?
代わりに、このステートメントのようなものを強制するにはどうすればよいですか?
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.
を与える編集
タプルとして各レコードを入力しようとすると、トリプルが3つの別々のフィールドではなく単一の値であると考えられますか?例えば:私はこれを行うまで
import numpy as np
x = np.array([(1, 'O', 1)],
dtype=np.dtype([('step', 'int32'),
('symbol', '|S1'),
('index', 'int32')]))
は罰金だ:x.shape
は、(1)ではなく(1,3)であるため、
import numpy.lib.recfunctions as rec
rec.append_fields(x,'x',x['index']+1)
は私に、おそらく
TypeError: object of type 'numpy.int32' has no len()
を与えます。
おかげで、その後Xの形状は、(1)よりもむしろ(1,3)ですか? – hatmatrix
これは、構造化配列を定義するときに得られるものです。 'x ['symbol']' – unutbu
のような構文で列にアクセスできます。ありがとうございます。追加フィールドを別の質問として投稿します。 – hatmatrix