Мне было интересно, можно ли будет ввести список ключей в (уже составленный) словарь и изменить соответствующие значения. Вот код моей проблемы:
zero_terms = np.array(unigrams)[tfmatrix[i]==0]
nonzero_terms = np.array(unigrams)[tfmatrix[i]>0]
idf_values[zero_terms]=1
idf_values[nonzero_terms]+=1
В основном, изменения должны быть внесены в словарь. idf_values
: zero_terms
- это пустой массив этих ключей, значение которого равно нулю в tfmatrix
, а nonzero_terms
представляет собой простой массив этих ключей, значение которого равно ненулевой в tfmatrix
. При запуске этого кода я получаю следующую ошибку:
TypeError: unhashable type: 'numpy.ndarray'
Словарь видит весь массив как ключ, тогда как я хочу, чтобы элементы массива рассматривались как ключи. Как мне это сделать?
Редактировать: попросили предоставить дополнительную информацию.
unigrams
- это словарь с ключами, которые совпадают с ключами idf_values
и столбцами в tfmatrix
, который является двумерной матрицей. Моей целью было обойти это за цикл:
for i in range(0,tfmatrix.shape[0]):
for j in range(0,tfmatrix.shape[1]):
if tfmatrix[i][j]==0:
#change value to 1 in idf_values
else:
#incremenet value in idf_values