numpy追加,typeError:无效的类型提升

时间:2019-03-31 02:58:59

标签: python numpy multidimensional-array numpy-ndarray

我想用混合数据类型创建一个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时未指定音素,则没有错误,但是ndarray中的列都具有相同的数据类型(字符串)。

感谢您的帮助。谢谢

1 个答案:

答案 0 :(得分:0)

您的代码有两点错误。首先,您应该为要成为可变长度字符串的字段指定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')])