numpy append, typeError: invalid type promotion

numpy append, typeError: invalid type promotion

我想创建一个混合数据类型的 numpy ndarray。但是我在向它附加另一行时遇到了问题。 我的目标是初始化 k 并在将来继续向其添加行。

import numpy as np

k = np.ndarray((0,3), dtype=[('name', str), ('age', int), ('height', float)])
print(f'k datatype: {k.dtype}')
# k datatype: [('name', '<U'), ('age', '<i4'), ('height', '<f8')]
np.append(k, ['matt', 40, 180.5])
# TypeError: invalid type promotion

如果我在创建k的时候没有指定dypte,那么不会报错,但是ndarray中的列都是相同的数据类型(字符串)。

感谢任何帮助。谢谢

您的代码有两处错误。首先是您应该为您打算成为可变长度字符串的字段指定 object dtype。

第二个是numpy对待liststuples的方式不同,符合他们的概念渊源。您需要在追加之前将要追加的对象转换为等效结构。

这会起作用:

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')])