Numpy、掩码和sklearn聚类

1 投票
1 回答
727 浏览
提问于 2025-04-18 01:49

我在把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在评论中提到的建议。

撰写回答