Извлечение максимального элемента массива по индексу на основе условных других массивов - PullRequest
1 голос
/ 27 сентября 2019

Я считаю, что моя проблема действительно проста, и должен быть действительно простой способ решить эту проблему, однако, поскольку я совсем новичок в Python, я не смог решить ее самостоятельно.

Iсоставил следующие примеры, которые, естественно, представляют собой более простой сценарий того, над чем я работал, поэтому я ищу подходящее общее решение для других случаев.Поэтому, пожалуйста, подумайте:

import numpy as np

x = np.array([300,300,450,500,510,750,600,300])

x_validate1 = np.array([0,27,3,4,6,4,13,5])

x_validate2 = np.array([0,27,3,4,6,4,3,5])

x_validate3 = np.array([0,7,3,14,6,16,6,5])

x_validate4 = np.array([0,3,3,5,7,4,9,5])

Что мне нужно, это извлечь максимальное значение в x, чей же индекс в других массивах (x_validate1,2,3,4) представляет элементы от 5 до 10 (условно)это означает, что если бы я хотел получить максимум в массиве x, он был бы логически равен 750 , однако, применяя это условие, я хочу, чтобы скрипт возвращал 510 , поскольку для других массивов условие выполнено.

Надеюсь, что мне удалось быть кратким и точным.Я был бы очень признателен за вашу помощь в этом!

1 Ответ

3 голосов
/ 27 сентября 2019

Вот один подход:

# combine all the above arrays into one
a = np.array([x_validate1, x_validate2, x_validate3, x_validate4])
# check in which columns all rows satisfy the condition
m = ((a > 5) & (a < 10)).all(0)
# index x, and find the maximum value
x[m].max()
# 510
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...