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
对待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')])
我想创建一个混合数据类型的 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
对待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')])