打印最小值并使输出成本最低

时间:2018-03-16 11:03:07

标签: python arrays printing minimum

在下面的代码中,我打印出整个输出及其最小值:

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)

感谢您的帮助和您的考虑。

2 个答案:

答案 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)