在下面的代码中,我打印出整个输出及其最小值:
l= 4.98648387414 q= 4.96850590047
l= 6.22734941766 8.30807062837 q= 2.50807065862 6.36351958551
l= 6.55113742501 8.91180674608 1.62449083617 q= 6.58695963821 0.0460316539106 6.79113942876
min is= [ 6.55113743 8.91180675 1.62449084] [ 6.58695964 0.04603165 6.79113943]
但我想要的输出是l
的最小值和相关的q
,这意味着:
min is= [1.62449084] [6.79113943]
我该怎么做呢?另一个问题是如何打印不在彼此前面的列中的输出。 像这样:
l= 4.98648387414 q= 4.96850590047 #for i=1
l= 6.22734941766 q= 2.50807065862 #for i=2
l= 8.30807062837 q= 6.36351958551 #for i=2
代码是:
from numpy import *
import numpy as np
a=None
temp=1e10
for i in range (1,4):
r=np.random.uniform(0,3,i)
x=np.random.uniform(0,9,i)
h=np.random.uniform(0,1,i)
l=h*10
if (l<1.0).any():
q=r
elif (l>1.0).any():
q=x
print("l= ",*l, "q= ",*q)
if (l<temp).any():
temp=l
a=q
print("min is=", temp,a)
感谢您的帮助和您的考虑。
答案 0 :(得分:0)
好的,如果您需要打印所有六个(l,q)对并找到所有这些对的最小值,则一次生成6个值而不是1 + 2 + 3没有区别。所以试试这个代码,让我知道它是否解决了这个问题:
import numpy as np
import numpy.random
r = np.random.uniform(0,3,6)
x = np.random.uniform(0,9,6)
h = np.random.uniform(0,10,6) # no need for l = 10*h
q = np.where(h < 1.0, r, x)
for xh, xq in zip(h, q):
print("h = %.7f q = %.7f" % (xh, xq))
index = np.argmin(h)
print("min is:\nh = %.7f q = %.7f" % (h[index], q[index]))
键在函数np.where
中允许根据第三个数组(此处为h)的项目从两个不同的数组(此处为h或q)中选择项目,这正是您在此需要的
答案 1 :(得分:0)
with open('textfile.txt', 'w') as f:
for x in zip(l,q):
f.write("{0}\t{1}\n".format(x[0],x[1])) #Writing the whole numbers in a txt file
print(min(l) #finding the minimum of l
在其他文件中,您可以使用此代码
import pandas as pd
df = pd.read_table('output.txt', header=None, sep='\s+')
findingtherelevant = df[df[0] == "min(l)"].values[0]
prin(findingtherelevant)