快速比较numpy数组元素,大于或小于彼此

时间:2015-02-04 15:38:48

标签: python arrays numpy

我目前正在python中实现集群算法。由于最终产品将使用数千个阵列元素,我试图尽量减少循环并尽可能地优化它。

我使用scipy的cdist从选定数量的随机簇创建距离的2D数组。所以3个簇会产生一系列距离,比如x点:

distances = array([[5.5,2.5,7.3],
                    [1.0,4.6,2.2],
                    [6.0,2.8,7.1],
                    [5.3,4.6,1.5],
                     ...........]])

如果每列是一个簇的距离,每一行都是一个点,我希望快速创建一个值为0,1或2的数组(可能解决相同的距离),如下所示:

label = array([1,0,1,2,.......])

除了循环之外的快速解决方案将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用

distances.argmin(axis=1)

返回

array([1, 0, 1, 2])

表示您的示例数组。

对于相同的距离,它返回第一次出现的这种元素。