首页 > 解决方案 > 使用多个数字范围的所有可能组合的输出数组总和为 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()”函数,但我认为它不会在这里工作。我希望这是对我要完成的工作的足够清晰的描述。

谢谢!

扎克

标签: python

解决方案


这应该有帮助:

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 数组。每个元组对于每个数组都有一个元素。


推荐阅读