#list #performance #numpy #loops #optimization
#Список #Производительность #numpy #циклы #оптимизация
Вопрос:
Я хотел бы получить индексы элементов в списке на основе условия. В большинстве случаев это можно сделать с np.where
помощью . Однако, как только условия усложняются, все становится беспорядочным.
В моем случае условие простое: элемент также существует во втором списке. Как я мог бы написать это эффективно? Я включил пример кода, который работает, но работает медленно из-за цикла for и добавления к списку. Если возможно, я хотел бы избавиться от обоих и иметь работоспособный код. У кого-нибудь есть идея, как это можно сделать?
import numpy as np
A = np.random.randint(4, size=20)
B = [0, 1, 2]
indices = list()
N = len(A)
for i in range(N):
if A[i] in B:
indices.append(i)
Ответ №1:
Это самое быстрое, что я мог сделать
[indices.append(i) for i in range(N) if A[i] in B]
Это заняло
Program Executed in 0.000104600000000010
Ваш взял
Program Executed in 0.000138000000000027