Найти индекс максимального значения в каждой строке двумерного массива - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть следующий код:

amplitude=[]
for i in range (0,160):
    amplitude.append(i+1)

#print(amplitude)

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

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

#print the maximum value of array along axis=1
max_amp=np.amax(amplitude_split,1)
print(max_amp)

#print the  indices of the maximum values along axis=1
ind_max_amp=np.argmax(amplitude_split, axis=1, out=None)
print(ind_max_amp)

Я хотел бы найти индексы для максимального значения в каждой строке массива. В настоящее время я получаю только ind_max_amp = [15 15 15 15 15 15 15 15 15 15], который, как я предполагаю, является столбцом каждого максимального значения.

Мне нужны кортежи: (0,15) (1,15) и т.д. c ...

Кроме того, кто-нибудь может мне помочь найти индекс 90% и 10% максимум в каждой строке?

nb это просто тестовый код, и максимум моих реальных данных не будет все в последнем столбце

1 Ответ

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

Вы можете получить максимальное значение для каждой строки через np.amax, используя axis=1 и keepdims, чтобы сохранить каждое максимальное значение в отдельной строке, а затем используйте np.argwhere, чтобы найти индекс этого максимального значения в каждом строка.

Это даст вам список нужных индексов:

ind = np.argwhere(amplitude_split==np.amax(amplitude_split,1, keepdims=True))
list(map(tuple, ind))

output:

[(0, 15), (1, 15), (2, 15), (3, 15), (4, 15), (5, 15), (6, 15), (7, 15), (8, 15), (9, 15)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...