Возможно ли оптимизировать/векторизовать код ниже? Прямо сейчас это не похоже на правильный способ делать вещи, и это не очень «пифонично». Код предназначен для работы с огромными наборами данных, поэтому производительность очень важна.Python numpy list filtering
Идея состоит в том, чтобы удалить все значения и их имена, которые не встречаются в обоих списках.
E.g. Результатом приведенного ниже кода будет два списка с именами «name2» и «name4», имеющими значения [2,4] и [5,6] соответственно.
import numpy as np
names1=np.array(["name1","name2","name3","name4"])
names2=np.array(["name2","name4","name5","name6"])
pos1=np.array([1,2,3,4])
pos2=np.array([5,6,7,8])
for entry in names2:
if not np.any(names1==entry):
pointer=np.where(names2==entry)
pos2=np.delete(pos2,pointer)
names2=np.delete(names2,pointer)
for entry in names1:
if not np.any(names2==entry):
pointer=np.where(names1==entry)
pos1=np.delete(pos1,pointer)
names1=np.delete(names1,pointer)
Вы преданы использованию 'numpy' для этого? Это больше похоже на проблему «панд». – DSM
У меня нет опыта работы с пандами. Любые намеки –