Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在用户提供的范围内找到局部最大值?_Python - Fatal编程技术网

Python 如何在用户提供的范围内找到局部最大值?

Python 如何在用户提供的范围内找到局部最大值?,python,Python,我的数据集如下所示: data=array([ 0.56660112, 0.76309473, 0.69597908, 0.38260156, 0.24346445, 0.56021785, 0.24109326, 0.41884061, 0.35461957, 0.54398472, 0.59572658, 0.92377974]) 用户提供的索引数组(可以不同): 最大值应在3到5,5到7,7到11之间进行计算,并且所有最大

我的数据集如下所示:

data=array([ 0.56660112,  0.76309473,  0.69597908,  0.38260156,  0.24346445,
            0.56021785,  0.24109326,  0.41884061,  0.35461957,  0.54398472,
            0.59572658,  0.92377974])
用户提供的索引数组(可以不同):

最大值应在3到5,5到7,7到11之间进行计算,并且所有最大值索引应附加在另一个列表中

fa= [0.38260156, 0.24346445, 0.56021785]   
sa= [0.56021785, 0.24109326, 0.41884061]   
ta= [0.41884061, 0.35461957, 0.54398472, 0.59572658, 0.92377974]
在内部,它应该根据索引大小进行拆分,本地最大值的索引应该附加在列表中。

numpy的argmax(数组)函数将返回给定数组中最大值的索引

maxValueInArray = np.argmax(data)
要获取数组范围内的最大索引,只需执行以下操作:

maxValueInRange = np.argmax(data[beginning:end]])
只需在所有索引范围内循环,收集所有最大值索引。然后,您可以稍后收集所有实际值,因为您现在可以在循环最大值的同时将它们的索引或附加到数组中。给定如示例中所示的小尺寸阵列,无论哪种方式都不会有明显的性能差异

这里有一种方法可以在范围内循环,并在特定范围内附加最大值的索引:

from numpy import array
import numpy as np
maximaArray = []

data=array([ 0.56660112,  0.76309473,  0.69597908,  0.38260156,  0.24346445,
        0.56021785,  0.24109326,  0.41884061,  0.35461957,  0.54398472,
        0.59572658,  0.92377974])

index=[3,5,7,11]

for i in range(len(index)):
  if i+1 == len(index):
    break
  maximaArray.append(np.argmax(data[index[i]:index[i+1]+1]))

>>> maximaArray
[2, 0, 4]
2、0和4对应于这些数组中的索引:

fa= [0.38260156, 0.24346445, 0.56021785]   
sa= [0.56021785, 0.24109326, 0.41884061]   
ta= [0.41884061, 0.35461957, 0.54398472, 0.59572658, 0.92377974]

-你能告诉我如何循环所有的索引范围吗?用一个例子来编辑答案。你可能想自己写下循环中的步骤,然后自己弄清楚如何处理问题的其余部分,因为这个答案开始涵盖多个问题,我相信这并不是堆栈溢出的目的。
fa= [0.38260156, 0.24346445, 0.56021785]   
sa= [0.56021785, 0.24109326, 0.41884061]   
ta= [0.41884061, 0.35461957, 0.54398472, 0.59572658, 0.92377974]