Обновите значения массива numpy, если значения в наборе находятся в значениях словаря, используя функцию Numpy

Мой набор данных на самом деле огромен, но я представляю небольшой набор данных:

array = np.zeros((2,2))
row = set([12,20])
column = {0:{10,14}, 1:{11,12}}

Мой текущий код работает, но он очень медленный для моего массивного набора данных:

c=0
for col in column.values():  
    r=0
    for row in rows:
        if row in column:
            array[r,s] = 1
        r+=1
    s+=1
print(array)

выход:

[[0. 1.]
 [0. 0.]]

Это вывод, который я хочу, но опять же, этот вложенный цикл слишком медленный для массивного набора данных. Я читал, что numpy.where() может выполнять аналогичные операции НАМНОГО быстрее. Возможно, я использую неправильную функцию numpy для этого, или, возможно, нет решения numpy, но моя текущая функция numpy.where() с ключевым словом "in" выглядит так:

array = np.where(row in column, 1, 0)

выход:

array(0)

Этот вывод в значительной степени указывает на то, что я далек от ответа. Я пробовал индексировать, писать сценарии для набора и типа словаря, и бросил все, кроме кухонной раковины, но я далеко. Есть ли эффективный способ сделать это с помощью numpy.where() или другой функции numpy? Возможно, использование другого типа данных будет работать?

0 ответов

Другие вопросы по тегам