У меня следующая ситуация.Давайте определим матрицу D (8,4):
import numpy as np
import random
D=np.matrix([[72 22 58 63]
[28 22 32 20]
[40 41 58 20]
[22 58 22 41]
[28 78 51 45]
[58 61 28 71]
[51 22 28 51]
[22 63 54 22]])
Давайте установим случайный столбец:
j=np.random.choice(range(4))
Мы сохраним это значение в пустом списке Sp.
Sp=[]
Sp.append(j)
Я хочу определить индекс максимального значения в матрице D для этого столбца.
z=D[:,j].argmax(axis=0)
Пока все работает нормально.Теперь я хочу сделать тот же процесс, но только для подмножества строк матрицы D над столбцом j (для простоты оставим это исправленным).Я попробовал это
j=2 #COLUMN.
a=[1,2,3,4] #SUBSET OF ROWS TO CHECK.
z=D[a,j].argmax(axis=0)
Проблема в том, что возвращаемый индекс - это не тот, кто соответствует элементу в матрице D, а индекс в матрице D [a, j].Результат должен быть z = 2, что соответствует значению 58, тем не менее, возвращаемое значение было z = 1, которое является позицией значения 58, но в матрице D [a, j].
[[32]
[58]
[22]
[51]]
Мне нужен индекс по отношению к исходной матрице (D), когда я делаю этот процесс.Любая идея?Я видел некоторые подходы, но я думаю, что должен быть какой-то простой способ сделать это?
Обратите внимание, что это не то же самое, что этот вопрос , потому что подмножество строк не всегда [1,2,3] или [5,6,7].Мой пример обращается к общему подмножеству, например, [2,7,3,4] без четкого начала - конца.