Python中计数器的线性组合

时间:2018-12-09 00:48:10

标签: python counter

我有一些Counter对象,如下所示,它们代表等式的左侧和右侧:

左手边:(Counter({22.99: 1}), Counter({12.011: 2, 15.999: 2}), Counter({12.011: 7}))

右手边:Counter({12.011: 15, 15.999: 1})

我的目标是找到方程式两侧之间的公共元素,然后确定左侧的线性组合,使我可以使用右侧。

在上面的示例中,要求解的方程为:

2A*12.011 + 7B*12.011 = 15W*12.011

2A*15.999 = W*15.999

我预计此操作将涉及将Counter字典转换为矩阵以求解线性方程组,但仍会限制这样做。

1 个答案:

答案 0 :(得分:1)

这是一种非常符合您的方法的解决方案。

  1. 将每个Counter转换为向量,将不同的ID视为单独的维度。
  2. 解决线性方程组。

vim /tmp/text
let sum=0
for X in `cat /tmp/text`; do let sum=$sum+$X; done
echo $sum