Python 在同一函数中多次返回函数的结果

Python 在同一函数中多次返回函数的结果,python,pandas,loops,numpy,pearson-correlation,Python,Pandas,Loops,Numpy,Pearson Correlation,我试图返回一个总数为100的数字列表。。11次 有3个数字是由numpy随机均匀分布生成的 我想添加一个if语句,看看每个列表的第一、第二和第三个数字(总共11个)是否。。如果绘制,则皮尔逊相关系数>0.99 目前,我只能生成一个总数等于100的数字列表 我有以下代码: import math import pandas as pd import matplotlib.pyplot as plt import numpy as np c1_high = 98 c1_low = 75 c2_hi

我试图返回一个总数为100的数字列表。。11次

有3个数字是由numpy随机均匀分布生成的

我想添加一个if语句,看看每个列表的第一、第二和第三个数字(总共11个)是否。。如果绘制,则皮尔逊相关系数>0.99

目前,我只能生成一个总数等于100的数字列表

我有以下代码:

import math
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

c1_high = 98
c1_low = 75
c2_high = 15
c2_low = 6
c3_high = 8
c3_low = 2

def mix_gen():
    while True:
        c1 = np.random.uniform(c1_low, c1_high)
        c2 = np.random.uniform(c2_low, c2_high)
        c3 = np.random.uniform(c3_low, c3_high)
        tot = c1+c2+c3

        if 99.99<= tot <=100.01:
            comp_list = [c1,c2,c3]
            return comp_list

my_list = mix_gen()
print(my_list)

这可以是一个使用返回列表的选项

def mix_gen(number):
    flag = 0
    container = []
    while flag < number:
        c1 = np.random.uniform(c1_low, c1_high)
        c2 = np.random.uniform(c2_low, c2_high)
        c3 = np.random.uniform(c3_low, c3_high)
        tot = c1+c2+c3

        if 99.99 <= tot <= 100.01:
            flag += 1
            container.append([c1,c2,c3])

    return container

if
中使用计数器标志,并且在将11个列表附加到容器中之前,不要从
返回,因为您正在寻找
yield
是的,确实如此!我现在需要检查容器中的11个项目,每个组件C1、C2和C3的R^2>0.99=/。我可以使用“容器_C1=[item[0]for item in container]”来完成此操作。。但不确定如果未达到R^2值>0.99,如何恢复到循环。hmm@Joey你应该清楚地说明你的目标是什么。我不知道你为什么现在想要访问一个不符合你最初要求的C1值,因此,你一开始没有将其保存在任何容器中。我更新了我的原始帖子,以更好地描述我的目标。这是一个非常有趣的问题要解决。。。然而,也许仅仅尝试随机数就可以得到解决方案,这将需要太多的计算机工作。您应该考虑三条回归线的数学关系,以搜索符合这两个要求的点集合
def mix_gen(number):
    flag = 0
    container = []
    while flag < number:
        c1 = np.random.uniform(c1_low, c1_high)
        c2 = np.random.uniform(c2_low, c2_high)
        c3 = np.random.uniform(c3_low, c3_high)
        tot = c1+c2+c3

        if 99.99 <= tot <= 100.01:
            flag += 1
            container.append([c1,c2,c3])

    return container
my_list_of_lists = mix_gen(11)