Я пытаюсь провести векторизацию некоторых вычислений элементов, но с трудом это сделаю, не создавая списки для локальной информации для глобальной информации. Мне сказали, что я могу выполнить то, что я хочу сделать, используя логические массивы, но пока что примеры, которые я нашел, не помогли. Хотя да, я могу сделать это со списком, скорость - это главная проблема с моим кодом.логические массивы и сопоставление в python
У меня есть набор значений, которые указывают индексы в «глобальном» расчете, которые не следует настраивать.
Например, эти «фиксированные» индексы
1 2 6
Если мой глобальный расчет десять элементов, я бы смог установить все «свободное» значение путем создания списка множества глобального индексов и вычитания фиксированных индексов.
free = list(set(range(len(global)) - set(fixed))
[0, 3, 4, 5, 7, 8, 9]
в глобальном расчета, я смог бы настроить «свободные» элементы, как показано в следующем фрагменте кода
global = np.ones(10)
global[free] = global[free] * 10
, который должен производить:
global = [10, 1, 1, 10, 10, 10, 1, 10, 10, 10]
мой " локальный "расчет является подмножеством глобального, где локальная карта указывает соответствующие индексы в глобальном расчете.
local_map = [4, 2, 1, 8, 6]
local_values = [40, 40, 40, 40, 40]
, но мне нужны значения, связанные с локальной картой, чтобы сохранить их порядок для целей расчета.
Каким будет эквивалент глобального [бесплатного] на местном уровне? желаемый результат будет что-то вроде этого:
local_free = list(set(range(len(local)) - set(fixed))
local_values[local_free] *= 10
OUTPUT: local_values = [400, 40, 40, 400, 40]
Я извиняюсь, если форматирование вопрос выключен, кажется, не работает в браузере код форматирования блока, поэтому, пожалуйста, дайте мне знать, если вам нужны разъяснения ,