我有一个带键的numpy数组(例如[1, 2, 2, 3, 3, 2]
)和一个带值的数组(例如[0.2, 0.6, 0.8, 0.4, 0.9, 0.3]
)。我想在不使用for循环的情况下找到与每个唯一键关联的最小值。在这个例子中,答案是{1: 0.2, 2: 0.3, 3: 0.4}
。我问了ChatGPT和New Bing,但他们一直给我错误的答案。那么,真的可以在不使用for循环的情况下做到这一点吗?
编辑1:我想达到的是最快的速度。而且,在我的例子中,大多数键都是唯一的。我考虑使用np.unique
来获取每个键,然后计算每个键的最小值,但显然这需要一个for循环和一个二次时间。我还考虑按键对数组进行排序,并对每个键的值应用np.min
,另外,根据评论,pandas.DataFrame
有一个groupby
方法可能会有帮助,但我不确定它是否是最快的(也许我会自己尝试)。
编辑二:我不一定需要dict
作为输出;它可以是唯一键的数组和最小值的数组,键的顺序无关紧要。
3条答案
按热度按时间mpgws1up1#
我不认为没有循环是可能的。
字符串
aij0ehis2#
简单的Python解决方案类似于:
字符串
它应该是相对较快的。
如果您确实需要从中挤出性能,则应该使用
numba
型
请务必仔细阅读numba docs,以了解如何尽可能地提高性能。
3htmauhk3#
试试看:
字符串
打印:
型
快速基准:
型
创建此图表:
的数据