在数据库中,我有一个压缩频率阵列。第一个值表示完整的数组索引,第二个值表示频率。这被压缩为仅非 0 值,因为它非常稀疏 - 少于 5% 的非 0 值。我正在尝试解压缩数组,然后我需要该数组的点积与权重数组来获得总权重。对于较大的阵列,这非常低效。有没有人有更有效的方法来做到这一点?例如,我应该使用 scipy.sparse 并保持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