在数据库中,我有一个压缩的频率数组。第一个值表示完整的数组索引,第二个值表示频率。它被压缩为非0值,因为它非常稀疏-小于5%的非0值。我正在尝试解压缩数组,然后我需要这个数组的点积和一个权重数组来获得总权重。对于较大的阵列,这是非常低效的。有没有人有更有效的方法来做这件事?例如,我应该使用稀疏稀疏而让compressedfreqs数组保持原样?或者也许我应该做一个更有效的列表理解,而不是在每一项中循环?在
下面是我正在做的一个小例子:
import numpy as np
compressedfreqs = [(1,4),(3,2),(9,8)]
weights = np.array([4,4,4,3,3,3,2,2,2,1])
freqs = np.array([0] * 10)
for item in compressedfreqs:
freqs[item[0]] = item[1]
totalweight = np.dot(freqs,weights)
print totalweight
您可以使用
scipy.sparse
为您处理所有这些:如果不希望使用稀疏模块,可以使用生成器表达式使其工作,尽管可能较慢:
^{pr2}$相关问题 更多 >
编程相关推荐