python - 迭代二维 numpy 数组以找到相应的最大值
问题描述
我有一组数据:
interactions=np.array([[0,1], [0,2], [0,3], [1,2], [1, 4], [2, 1], [2,5], [2,7]])
我需要遍历第一列中的每个值,在第二列中找到相应的最大值,然后存储在一个新数组中(或从该数组中删除其他值)。因此,对于此示例,最终输出将是:
interactions=[[0, 3], [1, 4], [2,7]]
我已经设法编写了一段代码,它将为特定的列值执行此操作,但无法弄清楚如何将它变成一个循环来执行整个数组:
创建一个数组来存储值:
p_gamma=np.amax(interactions[:,0])
zfinal=np.zeros([np.int(p_gamma)+1, 2])
找到每个列值的最大值(这是我需要帮助的地方!):
counter=0
interactions=interactions[interactions[:,0] ==counter]
maxval=np.amax(interactions[:, 1])
interactions=interactions[interactions[:, 1] == maxval]
zfinal[0,:]=interactions
提前感谢您提供的任何帮助!!!
解决方案
这样做的numpy
方法是:
i = np.flatnonzero(np.diff(interactions[:, 0])) + 1 # finding indices where first column changes
np.maximum.reduceat(interactions, np.r_[0, i]) # taking maximum values between those indices
array([[0, 3],
[1, 4],
[2, 7]], dtype=int32)
推荐阅读
- websocket - Cloudflare 阻止 websocket 连接
- javascript - 在画布上绘制三角形,当所有 3 个边都给定时,但将其移动到中间并旋转它(Javascript)
- html - Android Webview 视频 - net::ERR_BLOCKED_BY_RESPONSE
- javascript - 如何从我的 firebase 数据库中检索数据?
- reactjs - 有没有办法使用 Spring Security 实现 google 登录和使用 jwt 令牌自定义登录?
- python - Jax 和训练神经网络
- runtime-error - 无法使用 back4app 完成注册和登录
- android - 获取数据库检查器:读取 Sqlite 数据库时出错。在 Android Studio 中找不到数据库
- c# - 是否可以向 AuthorizationHandler 的 HandleRequirementAsync 方法发送额外的参数?
- shell - 使用内置 bash 创建目录