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

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

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)

output:

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

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

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

output:

array(0)

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

...