gpt4 book ai didi

python - 给定列的 Numpy 最小值

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:17 24 4
gpt4 key购买 nike

我有一个二维 numpy 数据数组,其中包含有关我正在跟踪的元素对的对称信息,非常类似于锦标赛中的循环赛。保持这个类比,每个玩家占据一行,列数据是他们对给定对手的得分。由于“遗留”原因,所有分数都将是正数,除了对自己的分数为 0。

假设我想找到给定球员的最差得分,同时返回得分和他们为该得分打过的对手。我该怎么做?

平庸的版本可能是这样的:

minimum = float('inf')
min_opp = None
for opponent_id in player_ids:
if opponent_id != player_id:
score = match_matrix[player_id, opponent_id]
if score < minimum:
minimum = score
min_opp = opponent_id
return minimum, min_opp

但这根本没有使用 numpy 的强大功能。我觉得应该有一个简单的解决方案,但我似乎找不到。

score = np.min(match_matrix[player, :])

给出了 self 评分,我不太能把代码从this answer正常工作。

谢谢!

编辑:This answer提供了很好的想法,但只获取整个数组的最小值,而不是一行。

最佳答案

您可以选择给定的行,屏蔽掉 self 得分并返回余数的最小值。基本上你做了什么,但有一个额外的屏蔽步骤。我还建议使用 np.argmin而不是 np.min 因为它返回最小值的索引,在这种情况下它提供的信息更多:

mask = np.ones(match_matrix.shape(1), dtype=np.bool)
mask[player] = False
opponent = np.argmin(match_matrix[player, mask])
if opponent >= player:
opponent += 1
score = match_matrix[player, opponent]

关于python - 给定列的 Numpy 最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com