python - Python Numpy 数组修改
问题描述
我有一个情节 y vs x。基于一些边界条件,我得到了一个 x 值列表和对应的 y 值
x = [2, 4, 8, 11, 18, 24, 31]
相应的 y 值为
y = [180, 139, 144, 90, 81, 109, 153]
输出是一个数组,它返回两倍的 x output =[4, 8, 16, 22, 36, 48, 62]
我的任务是将最终输出数组限制为最多 5 个值。这些值应对应于数组 y 中的 5 个最高值。
所以,我应该得到
output = [4, 8, 16, 48, 62]
此外,不同的数据集会给出不同的编号。x 和 y 值。因此,如果原始输出数组的值小于或等于 5 个,则应按原样打印。
我正在尝试用几行代码找到一种方法。
解决方案
您的问题基本上归结为如何获得数组的 n 个最高值的问题。你将需要argsort()
这个。
if len(y) > 4:
n_highest = 5
else:
n_highest = len(y)
y_highest = y.argsort()[-n_highest:][::-1] # this gives you the indices of the five highest values of y
x_out = x[y_highest] * 2
如果您不想x_out
被排序,而是反映原始排序,则必须遍历eatch item,询问是否在以下位置找到它的索引y_highest
:
x_out = [x[i]*2 for i in range(len(x)) if i in y_highest]
推荐阅读
- javascript - Firebase 函数未获取配置变量
- javascript - 我应该如何解释这个三元运算符?
- android - 杀死应用程序 Xamarin 表单
- mysql - 使用哪种关系模型来存储依赖于其他值的值?
- c# - 如何在 C# 中修复“在 MdiChild 中更改 MdiParent”
- sql - 我需要编写一个查询以在下面显示这些信息
- r - 如何让 lpsolveAPI 返回所有可能的解决方案?
- angular - 使用@angular/bazel protractor_web_test_suite 在调试模式下运行量角器
- c - 缓冲区溢出不产生外壳?
- apache-kafka - Kafka Connect JDBC 连接器 - 由于不可恢复的异常而退出 WorkerSinkTask