Найдите значение, близкое к числу в массиве python, и индексируйте его - PullRequest
1 голос
/ 15 апреля 2020

Это код, который у меня есть:

import numpy as np

#make amplitude and sample arrays
amplitude=[0,1,2,3, 5.5, 6,5,2,2, 4, 2,3,1,6.5,5,7,1,2,2,3,8,4,9,2,3,4,8,4,9,3]
#print(amplitude)

#split arrays up into a line for each sample
traceno=5                  #number of traces in file
samplesno=6                #number of samples in each trace. This wont change.

amplitude_split=np.array(amplitude, dtype=np.int).reshape((traceno,samplesno))
print(amplitude_split)

#find max value of trace
max_amp=np.amax(amplitude_split,1)
print(max_amp)

#find index of max value
ind_max_amp=np.argmax(amplitude_split, axis=1, out=None)
#print(ind_max_amp)

#find 90% of max value of trace
amp_90=np.amax(amplitude_split,1)*0.9
print(amp_90)

Я бы хотел найти значение в каждой строке массива, которое ближе всего к соответствующему amp_90. Я также хотел бы иметь возможность получить индекс этого числа. Пожалуйста, помогите!

nb Я знаю, что это легко сделать на глаз, но это тестовый набор данных, прежде чем применить его к моим реальным данным!

1 Ответ

1 голос
/ 15 апреля 2020

IIU C, вы можете сделать следующее:

# find the indices of the min absolute difference 
indices = np.argmin(np.abs(amplitude_split - amp_90[:, None]), axis=1)

# get the values at those positions
result = amplitude_split[np.arange(5), indices]

print(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...