Python 在同一函数中多次返回函数的结果
我试图返回一个总数为100的数字列表。。11次 有3个数字是由numpy随机均匀分布生成的 我想添加一个if语句,看看每个列表的第一、第二和第三个数字(总共11个)是否。。如果绘制,则皮尔逊相关系数>0.99 目前,我只能生成一个总数等于100的数字列表 我有以下代码: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
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)