python - 使用多个数字范围的所有可能组合的输出数组总和为 1.0
问题描述
我有以下数组,它们代表我希望探索的数字范围:
cpx_var = np.linspace(0.20,0.80,61)
horn_var = np.linspace(0.20,0.80,61)
plag_var = np.linspace(0.2,0.7,6)
mag_var = np.linspace(0.2,0.6,5)
我想从每个数组中调用一个数字,这样 4 个数字总和为 1.0。我希望输出一个数组或数据帧,其中包含所有可能的组合,给定我感兴趣的范围(形式 4 xn,其中 n 是不同组合的数量),总和为 1.0。
我有点不知道下一步该做什么。我查看了“permutations()”函数,但我认为它不会在这里工作。我希望这是对我要完成的工作的足够清晰的描述。
谢谢!
扎克
解决方案
这应该有帮助:
import numpy as np
cpx_var = np.linspace(0.20,0.80,61)
horn_var = np.linspace(0.20,0.80,61)
plag_var = np.linspace(0.2,0.7,6)
mag_var = np.linspace(0.2,0.6,5)
a = [(i, j, k, w) for i in cpx_var for j in horn_var for k in plag_var for w in mag_var if i+j+k+w == 1.0]
a
是总和为 1 的 4 长度元组的列表。您可以将其转换为 numpy 数组。每个元组对于每个数组都有一个元素。
推荐阅读
- c# - 从列表中选择项目范围,直到找到整数值
- logstash - LogStash - 端口注册
- oracle - 在 Oracle ERP 云中如何获取角色的更深入细节,包括功能安全策略、数据安全策略、特定角色的角色层次结构
- android - 引起:android.view.InflateException
- c# - c# dotnet CLI “错误:没有可用于包 'Newtonsoft.Json' 的版本。”
- elasticsearch - 如何为索引中的文档设置选择属性
- azure-logic-apps - Azure 逻辑应用:可空 JSON 值不可用作动态内容
- c++ - 为什么要使用三向比较运算符 (<=>) 而不是双向比较运算符?这有优势吗?
- spring - Spring Webflux - 将所有 HTTP 请求发布到 pubsub
- css - 了解“空格键”和 > 选择元素之间的区别