我想在一个numpy数组中找到所有的最大值和它们的索引。
我在找一些简单的东西。我开始类似于data1:< data:-1不知道如何获得20和30,以及它们的索引2和7。
import numpy as np
data = np.array([0,1,20,1,0,1,2,30,2,1,0])
A = data[1:] < data[:-1]编辑:参数最大值和查找峰值听起来很难(例如,查找峰值会给出最小值和最大值)。我做了一个np.diff和一个循环,我有我的索引,尽管我尽量避免使用循环
import numpy as np
def maximum_index(data):
data = np.diff(data)
index_max = []
for index in range(len(data)-1):
if data[index] > 0 and data[index+1] < 0:
index_max.append(index+1)
return np.asarray(index_max)
data = np.array([0,1,9,1,0,1,2,9,2,1,0])
result_max = maximum_index(data)谢谢
发布于 2020-04-22 15:22:33
您可以按如下方式使用numpy.argsort:
import numpy as np
data = np.array([0,1,20,1,0,1,2,30,2,1,0])
N = 2 # number of maxima
idx = np.argsort(data)[-N:]
idx
array([2, 7], dtype=int64)
data[idx]
array([20, 30])如果您不知道最大值的数量,您可以使用scipy.signal.find_peaks
from scipy.signal import find_peaks
idx = find_peaks(data)[0]
idx
array([2, 7], dtype=int64)
data[idx]
array([20, 30])发布于 2020-04-22 15:36:46
你可以试试下面的代码
max_data_pos=np.argmax(data) #Find position of max elelemt
max_data_val=data[max_data_pos] #Find Max Valuse
second_max_data_pos=np.argmax(np.delete(data,max_data_pos)) #Find position of second max elelemt
secondmax_data_val=data[second_max_data_pos] #Find Max Valuse

https://stackoverflow.com/questions/61359308
复制相似问题