Как создать массив записей 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.

Edit

Если я попытаюсь ввести каждую запись как кортеж, он будет думать, что тройка - это одно значение, а не три отдельных поля? Например:

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).

8
задан Salvador Dali 16 November 2014 в 09:24
поделиться