Python中的数据类型转换和地图对象错误,TypeError:需要一个类似字节的对象,而不是“地图”

我有一个关于Python中数据类型转换的新手问题:

假设我有一个np.array对象为:

X = np.array([[1.,2.,0.5,2.],[2.,3.,0.7,[3.,0.65,1.]])

我想使用以下语法将[0,1,3]列中的每个值转换为整数格式:

Y = np.array(map(tuple,X),dtype=[('col0',int),('col1',('col2',float),('col3',int)]) 

我对Y的期望是与X形状相同的数组,但是每个list元素都将转换为元组和每一列的对应数据类型,即

Y = np.array([(1,2,2),(2,3,(3,1)])

但是,我遇到了TypeError:需要一个类似字节的对象,而不是'map'

所以我有两个本地问题: 1)对输出Y的期望是否正确? 2)如何修复TypeError?

huilovenai 回答:Python中的数据类型转换和地图对象错误,TypeError:需要一个类似字节的对象,而不是“地图”

首先,您对Y的期望是正确的,但是,如果您拥有大量不同数据类型的数组,则可能要考虑使用Pandas数据框,因为它以比直接得多的方式处理不同类型的列一个Numpy结构化数组。

第二,您的代码非常接近。 map生成一个map对象,而不是列表,并且正如TypeError所说,Numpy canot处理一个“ map”对象。简单的解决方案是用map()list()包裹起来,创建一个元组列表:

Y = np.array(list(map(tuple,X)),dtype=[('col0',int),('col1',('col2',float),('col3',int)]) 

哪种产量:

array([(1,2,0.5,2),(2,3,0.7,(3,0.65,1)],'<i8'),'<f8'),'<i8')])
本文链接:https://www.f2er.com/3025146.html

大家都在问