Numpy、掩码和sklearn聚类
我在把3D数据转换成2D数据时遇到了问题,这样才能把它提供给带宽函数进行均值漂移计算。最开始,我从数据库中查询到一维数组的数据和与这些数据相关的ID,这样可以帮助我后面识别数据来源。在计算之前,我增加了一个维度,以确保计算的正确性,所有的结果都保存在一个3D数组中。现在,我需要提供一个包含值和零的2D数组给计算函数,但我在构建这个没有第三个值(描述ID)的压缩2D数组时遇到了困难。有没有人知道怎么用numpy做到这一点,而不需要一个完全独立的ID列表?
源数组:
[(2.819999933242798, 0.0, 16383)
(3.75, 0.0, 16384)
(3.75, 0.0, 16385)]
经过掩码处理后的数组:
[(2.819999933242798, 0.0, --)
(3.75, 0.0, --)
(3.75, 0.0, --)]
所需的数组格式:
[(2.819999933242798, 0.0)
(3.75, 0.0)
(3.75, 0.0)]
谢谢!
1 个回答
1
你可以先把数据转换成一个numpy数组:
h=[(2.819999933242798, 0.0, 16383), (3.75, 0.0, 16384) , (3.75, 0.0, 16385)]
a=np.array(h)
然后再提取你想要的列:
a[:,0:2]
这样会得到:
array([[ 2.81999993, 0. ],
[ 3.75 , 0. ],
[ 3.75 , 0. ]])
或者可以使用 a[:,:-1]
,这是@BrenBarn在评论中提到的建议。