Я пытаюсь создать массив нулей и трехколоночных типов (целое число, число с плавающей запятой, символ). Справочный вопрос
Сомнение Почему dtype=S
здесь создает двоичную строку?
arr = np.zeros((3,), dtype=('i4,f4,S'))
arr
>>array([[(0, 0., b''), (0, 0., b''), (0, 0., b'')]],
dtype=[('f0', '<i4'), ('f1', '<f4'), ('f2', 'S')])
Issue Назначение символов не работает, вместо этого получаются пустые строки b''
.
arr[:] = [(1, 2., 'A'),
(2, 2., 'B'),
(3, 3., 'C')]
arr
>>array([[(1, 2., b''), (2, 2., b''), (3, 3., b'')]],
dtype=[('f0', '<i4'), ('f1', '<f4'), ('f2', 'S')])
Сомнение Почему проблема решается с помощью dtype='O'
или dtype='a40'
a python объекта?
x = np.zeros((3,), dtype=('i4,f4,O')) # same result goes with dtype='a40'
new_data = [(1, 2., "A"), (2, 2., "B"), (3, 3., "C")]
x[:] = new_data
print(x)
>>[(1, 2., 'A') (2, 2., 'B') (3, 3., 'C')]
Чем a40
отличается от S
, O
и U
dtypes
для NumPy строковых элементов?