【发布时间】:2019-07-01 13:07:59
【问题描述】:
我想知道是否可以将键列表输入(已经制作的)字典并修改相应的值。这是我的问题的代码:
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 中值为 0 的键的 numpy 数组,nonzero_terms 是值为的键的 numpy 数组tfmatrix 中的非零值。在运行此代码时,我收到以下错误:
TypeError: unhashable type: 'numpy.ndarray'
字典将整个数组视为键,而我希望它将数组的元素视为键。我该怎么办?
编辑:被要求提供更多详细信息。
unigrams 是一个字典,其键与idf_values 的键和tfmatrix 中的列相同,tfmatrix 是一个二维 numpy 矩阵。我的目标是绕过这个 for 循环:
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
【问题讨论】:
-
我实际上问的是它们在内容方面的样子,而不是它们的定义方式,这与之前的内容并没有太大的区别
-
字典一次只接受一个键。
numpy的使用不会改变这一点。dict上的唯一批量操作是update- 来自另一个dict。
标签: python arrays python-3.x numpy python-3.7