将二维数组写为不同类型的列

时间:2016-12-14 10:50:25

标签: python arrays python-3.x numpy

我有四个列表(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_'>

我不知道该怎么做。我试图改变类型,但它没有帮助。

1 个答案:

答案 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)