Numpy: генерация пересечения ИЛИ между двумя векторами True / False - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь «объединить» два вектора, содержащие значения true и false.

Если у меня есть вектор 4 (строки) и второй вектор из 3 (столбцы, я хочу создать матрицу 4x3 где значения представляют собой «ИЛИ» между 1-м и 2-м векторными значениями.

мой код получает ниже, получает желаемый вывод, но с ужасным временем выполнения:

import numpy as np
import time

np_calc_rows = np.random.choice(a=[False, True], size=(12000,))
np_calc_cols = np.random.choice(a=[False, True], size=(1000,))

np_output = np.empty((12000,1000),dtype=bool)

start = time.time()
for i in range(0,len(np_calc_rows)):
    for j in range(0,len(np_calc_cols)):
        np_output[i,j] = np_calc_rows[i] or np_calc_cols[j]
print('runtime (ms): ' + str(time.time()-start))

Любые попытки Добиться желаемого результата с помощью векторных / матричных операций не удалось, как я могу добиться этого эффективным способом без двух циклов?

1 Ответ

0 голосов
/ 09 апреля 2020

Использование вещание :

import numpy as np

np_calc_rows = np.random.choice(a=[False, True], size=(12000,))
np_calc_cols = np.random.choice(a=[False, True], size=(1000,))


np_output = np_calc_cols | np_calc_rows[:, np.newaxis]

print(np_output.shape)
print(np_output)

Выход

(12000, 1000)
[[False  True False ...  True  True False]
 [False  True False ...  True  True False]
 [False False False ... False False False]
 ...
 [False False False ... False False False]
 [False  True False ...  True  True False]
 [False False False ... False False False]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...