Как мы извлекаем массивы из вложенного массива numpy в зависимости от условий на подмассивах? - PullRequest
0 голосов
/ 01 июля 2019

У меня есть вывод, который является вложенным массивом NumPy. У каждого подмассива есть 10 значений с плавающей запятой, из этого «большего» массива я хочу извлечь те подмассивы, которые имеют максимальное значение по определенному индексу. Изменить: (отредактировано для ясности) Пример вложенного массива -

[[1 0 0 0] [1 0 0 0] [0 0 1 0] [1 0 0 0] [0 1 0 0] [0 0.99 0 0]

Требуемый выход [[0 1 0 0] [0 0.99 0 0]] (в данном примере мы берем индекс как 1)

Я хочу извлечь те подмассивы, чье значение с индексом 0,1,2 и т. Д. Является самым высоким. Таким образом, условие здесь состоит в том, чтобы извлечь все подмассивы, где значение по индексу 1 (например, максимально) является максимальным.

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

Итак, насколько я понимаю, у вас есть какой-то параметр max_index, и вы хотите получить все строки, максимальный элемент которых соответствует этому индексу.Для этого вы можете сказать «вернуть все строки моего массива, для которых argmax этой строки равно максимальному индексу», который в numpy является однострочным:

arr = np.random.randn(100, 10)
max_index = 2
rows_with_max_at_max_index = arr[np.argmax(arr, axis=1) == max_index]  # A (N x 10) array 
0 голосов
/ 01 июля 2019

Вот способ сделать это:

example = [[8, 5], [8,7], [5.6,1], [7, 9]]

# You choose which specific index you want tha max value
max_value_index= 0

# We use a list comprehension to select the corresponding rows
result = [x for x in example if x[max_value_index] == np.max(x)]

Вывод:

[[8, 5], [8, 7], [5.6, 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...