Say У меня есть массив большой 2D Numpy (назовем его ), который содержит целые числа от 0 до 9.Имея несколько условными равенства для Numpy массивов
Я пытаюсь написать функцию, которая возвращает двоичный массив Numpy (назовите его B) той же формы, что и A, который имеет следующие функции.
Запись в B равен 1, если соответствующий элемент в A появляется в данном списке L; в противном случае запись равна нулю.
Ниже показано, что, вероятно, не самый эффективный код для этого.
A = np.random.randint(0, 10, (5, 5))
L = [3,4,5]
B = np.zeros(A.shape)
for e in L:
B[A==e] = 1
Есть ли более быстрый способ?
Спасибо!
Мои результаты синхронизации при условии, другой рассказ , Я использую python 3.5 и numpy 1.10.4 из anaconda, а исходный цикл примерно в 3 раза быстрее, чем использование in1d. EDIT: Теперь я вижу, что вы использовали случайную матрицу 1000x1000. Я буду повторять с такой же матрицей. –
@ HAL9001 Я просто тестировал на python 3, я получаю довольно последовательный результат. Первый вариант np.in1d выполняется быстрее. Насколько велик массив, который вы тестируете? – Psidom
Результаты Psidom были подтверждены при использовании 1000x1000. –