Эффективное объединение двух больших булевых списков
Имеется два двумерных больших списка, содержащих True или False, например:
arr1 = [[False,True,False,True,False,False],[False,True,True,True,False,False]...]
arr2 = [[False,False,True,False,True,False],[True,False,True,True,True,False]...]
На выходе должно получиться:
arr = [[False,True,True,True,True,False],True,True,True,True,True,False]...]
В алгоритме важна скорость, поэтому перебор через обычный цикл for не подходит. Есть ли какие-то библиотеки или встроенные функции которые могут это сделать быстрее цикла for?
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Ну используйте numpy. Но тогда хорошо бы, чтобы сами данные уже были сразу в его формате, иначе много времени потратится на преобразование и не факт, что будет выигрыш:
import numpy as np
n = 10_000_000
k = 10
arr1 = np.random.choice([True, False], (n, k))
arr2 = np.random.choice([True, False], (n, k))
arr3 = arr1 | arr2
Автор решения: Classic Настоящий
→ Ссылка
Решение было найдено, с помощью numpy и функции np.logical_or(arr1,arr2)