首页 > 解决方案 > 将总和为 N 的整数数组缩放为总和为 1.0 的分数版本(python)

问题描述

pop = 100
number = list(range(pop+1))
comb = [c for c in itertools.product(number, repeat=3) if  c[0] + c[1] + c[2] == pop]

此代码生成最多 100 的所有三元组integersum我循环并检查它,它很好。但是,如果我将每个tuple除以 100,它们的总和不会为 1.0,而是一些条目sum为 0.99999999 或 1.00000002

poss_states = []
for i in range(len(comb)):
      poss_states.append(np.divide(np.array(comb[i]),100))

要检查它们的总和是否为 1.0,我使用了:

for i in np.array(poss_states).sum(axis=1):
    if i != 1.:
        print(i)

我尝试了几种正常化的方法,但没有任何效果。我怎么能强制总和为 1.0?

标签: pythonarraysnumpynormalization

解决方案


推荐阅读