Python 在数组x中查找最大化其在数组y中对应值的值

Python 在数组x中查找最大化其在数组y中对应值的值,python,arrays,numpy,minimize,maximize,Python,Arrays,Numpy,Minimize,Maximize,我有两个数组 第一个数组称为ret_arr,它包含不同投资组合的收益。 第二个数组称为vol_arr,它包含这些投资组合的波动性 如果我想在vol_数组中找到一个0.2±0.01的元素,它使ret_arr中对应的元素最大化,我该怎么做 我之所以提供0.01的公差,是因为volu arr中的数字不完全是0.2,我想在该波动水平附近取样很多点 我知道我可以做一些类似于vol\u arr.sort()和ret\u arr.sort()的事情,然后只需观察它们,以确定在每个波动水平下哪个回报最好,但有没

我有两个数组

第一个数组称为ret_arr,它包含不同投资组合的收益。 第二个数组称为vol_arr,它包含这些投资组合的波动性

如果我想在vol_数组中找到一个0.2±0.01的元素,它使ret_arr中对应的元素最大化,我该怎么做

我之所以提供0.01的公差,是因为volu arr中的数字不完全是0.2,我想在该波动水平附近取样很多点

我知道我可以做一些类似于
vol\u arr.sort()
ret\u arr.sort()
的事情,然后只需观察它们,以确定在每个波动水平下哪个回报最好,但有没有办法实现自动化

我的第一次尝试是运行以下命令:

import numpy as np
def find_nearest(array, value):
    array = np.asarray(array)
    idx = (np.abs(array - value)).argmin()
    return array[idx]

array = ret_arr
print(array)

value = 0.08

print(find_nearest(array, value))
但这只是在
ret_arr
中找到最接近我提供的值的元素


我宁愿提供波动率水平,给它一些容差,让代码循环覆盖该容差范围内的所有值,并告诉我波动率水平在最佳回报定义的容差范围内的指数。

假设我正确理解您的问题,如果您想在iterable
a
中找到使
b
中的对应值最大化的元素:

import numpy as np
max_index = np.argmax(b)
a[max_index]
这当然需要
a
b
具有相同的长度。

导入numpy作为np
import numpy as np
vol = 0.2
# Find indices of vol +/- 0.01 in the vol_arr
indices = np.where((vol_arr>vol-0.01) & (vol_arr<vol+0.01))
# Find the maximum return in the corresponding ret_arr
max_return = ret_arr[indices].max()
# Corresponding index from maximum return
max_index = ret_arr[indices].argmax()
# Look up the corresponding volatility
vol_index = indices[0][max_index]
vol_value = vol_arr[vol_index]
体积=0.2 #在vol_arr中找到vol+/-0.01的指数 指数=np,其中((vol_arr>vol-0.01)和(vol_arr