我有四个列表(int, float, float, str)
。但是在我创建2-d numpy array
的地方,他们写为"numpy.str_"
:
bus_log = np.array([unix_datatime, x, y, bus_number]).transpose()
print(type(bus_log[0][0]))
结果:
<class 'numpy.str_'>
我不知道该怎么做。我试图改变类型,但它没有帮助。
答案 0 :(得分:1)
这是因为如果以这种方式编写,结果NumPy数组将具有整个数组的一个公共类型:
bus_log = np.array([unix_datatime, x, y, bus_number]).transpose()
由于NumPy的投射规则,Numpy最终会将所有内容都拼成一个字符串。您可以看到具有bus_log.dtype
属性的数组类型。
您可以通过以下方式创建具有混合类型的NumPy数组:
a = np.zeros((1,1), dtype=[('unixtime', '<i4'), ('x', '<f4'), ('y', '<f4'),\
('bus_number', '|S20')])
a[0] = (unix_datatime, x, y, bus_number)