【问题标题】:Quick comparison of numpy array elements, greater or less than each other快速比较numpy数组元素,大于或小于彼此
【发布时间】:2015-04-04 05:01:07
【问题描述】:

我目前正在 python 中实现聚类算法。由于最终产品将使用数以千计的数组元素,因此我最初尝试尽量减少循环并对其进行优化。

我正在使用 scipy 的 cdist 从选定数量的随机簇创建一个二维距离数组。所以 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,.......])

将不胜感激一个快速的解决方案,而不是循环。

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    使用

    distances.argmin(axis=1)
    

    返回

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

    为您的示例数组。

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

    【讨论】:

    • 这似乎完全符合我的要求,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2018-06-26
    • 1970-01-01
    相关资源
    最近更新 更多