python - 将总和为 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 的所有三元组integer
。sum
我循环并检查它,它很好。但是,如果我将每个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?
解决方案
推荐阅读
- java - Java - 从 csv 文件创建的 arrayList 中解析对象名称
- javascript - 什么是防止浏览器页面滚动的通用方法,适用于每个浏览器和手机
- javascript - 当 URL 以“//”为前缀时,Electron 无法加载外部 SVG 文件
- python - 本地主机上的 Scrapy splash 连接被拒绝:8050
- python - 如何在条形图中为每个组添加唯一的水平条形标记
- angular - ng build/serve not working 模板中的错误
- mongodb - 如何理解 Bson 时间戳?
- c - 高级 C 问题:请解释 C 构造 *({ foo(&bar); &bar; })
- c - 如何在 C 中将文本文件作为命令行参数
- javascript - 在 javascript 对象中搜索任何值