Возможно, вам стоит посмотреть в эфир. Я предполагаю, что вы ищете что-то вроде следующего?
>>> b=np.arange(5)
>>> c=np.arange(6).reshape(-1,1)
>>> b
array([0, 1, 2, 3, 4])
>>> c
array([[0],
[1],
[2],
[3],
[4],
[5]])
>>> b==c
array([[ True, False, False, False, False],
[False, True, False, False, False],
[False, False, True, False, False],
[False, False, False, True, False],
[False, False, False, False, True],
[False, False, False, False, False]], dtype=bool)
>>> np.any(b==c,axis=1)
array([ True, True, True, True, True, False], dtype=bool)
Ну для больших массивов, вы можете попробовать:
import timeit
s="""
import numpy as np
array_size=500
a=np.random.randint(500, size=(array_size))
b=np.random.randint(500, size=(array_size))
c=np.random.randint(500, size=(array_size))
"""
ex1="""
a[np.any(b==c.reshape(-1,1),axis=0)]
"""
ex2="""
a[np.in1d(b,c)]
"""
print 'Example 1 took',timeit.timeit(ex1,setup=s,number=100),'seconds.'
print 'Example 2 took',timeit.timeit(ex2,setup=s,number=100),'seconds.'
Когда ARRAY_SIZE составляет 50:
Example 1 took 0.00323104858398 seconds.
Example 2 took 0.0125901699066 seconds.
Когда ARRAY_SIZE составляет 500:
Example 1 took 0.142632007599 seconds.
Example 2 took 0.0283041000366 seconds.
Когда ARRAY_SIZE составляет 5000 :
Example 1 took 16.2110910416 seconds.
Example 2 took 0.170011043549 seconds.
Когда ARRAY_SIZE составляет 50000 (число = 5):
Example 1 took 33.0327301025 seconds.
Example 2 took 0.0996031761169 seconds.
Примечание я должен был изменить, какая ось для np.any(), так что результаты будут одинаковыми. Обратный порядок np.in1d или ось переключения np.any для желаемого эффекта. Вы можете выполнить преобразование из примера 1, но изменить его можно довольно быстро. Переключитесь, чтобы получить желаемый эффект. Действительно интересно - мне придется использовать это в будущем.
Чтобы ответить на этот вопрос ничего лучше, чем догадка мы должны были бы, по крайней мере форму а, Ь, с - векторы, матрицы и т.д. – jedwards
а, b, c - 1D массивы – Brian
В результате вашего кода возникает синтаксическая ошибка. Не могли бы вы показать небольшой рабочий пример медленного кода? –