python - numpy 数组 - 根据多行选择最大值
问题描述
我想为二维 numpy 数组编写一个函数 bestcolumn,它将执行以下操作 - 选择第 0 行中具有最大值的列,如果第 0 行中有多个具有最大值的值,则在它们之间选择具有最大值的列在第 1 列中,然后对第 2 列应用相同的内容。
在下面的示例中,4 是第 0 行中的最大值,但是 0、1、2 三列具有相同的值 4,因此我们在第 1 行中搜索第 0、1、2 列。第 1,2 列中的最大值为 5。然后我们在 col 2 中搜索 tiebreaker 并选择 col 2
有没有办法使用 numpy 的矢量化操作(而不是使用 for 循环和 if/else 语句)来实现这一点?
import numpy as np
A = np.asarray([[4,4,4,3],
[3,5,5,7],
[2,3,4,10]])
解决方案
一种方法是使用numpy.lexsort但它对所有列进行排序不仅找到最大的列。
np.lexsort(-A.T)[0]
# 2
推荐阅读
- sql - SQL查询以获取子计数并将其求和
- firebase - Firebase - 创建一个临时用户,直到用户注册
- python - 根据列值将大型 csv 拆分为较小的 csv 文件,最终在较小的文件中出现空白
- c# - 正则表达式仅选择具有一致标题的字符串中的最后一个单词
- javascript - 基于 React 的 Chrome 扩展 - 未经检查的 runtime.lastError:无法建立连接。接收端不存在
- c - 构建找不到 Stdio.h 但我可以...?
- google-play-games - 为什么我的游戏未发布版本无法登录 Google Play 游戏?
- wordpress - 如何保存我的 Wordpress 网站的当前外观,以便恢复到旧版本?
- java-native-interface - 使用新的 java 包装器向 linphone 添加新的本机函数
- java - javax.persistence.PersistenceException:没有名为 Money-transfer 的 EntityManager 的持久性提供程序