Есть две вещи не так с вашим кодом. Во-первых, вы должны указать тип object
d для полей, которые вы собираетесь использовать как строки переменной длины.
Во-вторых, numpy
трактует lists
и tuples
по-разному, в соответствии с их концептуальным происхождением. Вам необходимо преобразовать объект, который вы хотите добавить, в эквивалент структуры перед добавлением.
Это будет работать:
import numpy as np
k = np.ndarray((0,3), dtype=[('name', object), ('age', int), ('height', float)])
np.append(k, np.array(('matt', 40, 180.5), dtype=k.dtype))
Выход:
array([('matt', 40, 180.5)],
dtype=[('name', 'O'), ('age', '<i4'), ('height', '<f8')])