我想解决一个最小值问题,我可以从两个循环中获取最小值,但是,我真正需要的也是相应的输出最小值的确切值。如何查找循环中的哪个输入值产生最小输出?
from __future__ import division
from numpy import*
b1=0.9917949
b2=0.01911
b3=0.000840
b4=0.10175
b5=0.000763
mu=1.66057*10**(-24) #gram
c=3.0*10**8
Mler=open("olasiM.txt","w+")
data=zeros(0,'float')
for A in range(1,25):
M2=zeros(0,'float')
print 'A=',A
for Z in range(1,A+1):
SEMF=mu*c**2*(b1*A+b2*A**(2./3.)-b3*Z+b4*A*((1./2.)-(Z/A))**2+(b5*Z**2)/(A**(1./3.)))
SEMF=array(SEMF)
M2=hstack((M2,SEMF))
minm2=min(M2)
data=hstack((data,minm2))
data=hstack((data,A))
datalist = data.tolist()
for i in range (len(datalist)):
Mler.write(str(datalist[i])+'\n')
Mler.close()
在这里,我要的就是看SEMF
和相应A
,Z
值,例如,它必须是A=1
,和SEMF= some#
我也不知道怎么的最小值把这些,A
和Z
的值写入文档
哪里是'zeros','array' ,和'hstack'定义?他们是Numpy功能吗?如果是这样,你需要添加'numpy'标签到你的问题。否则,人们不会知道你正在寻找一个Numpy解决方案。 –
我相信,我纠正了开始部分。感谢您指出。 –
等一等,在你的循环中,“SEMF”只是一个数字?我不明白你为什么要做这个循环,并且当你可以使用一些向量化操作时,使用'hstack'逐个添加元素...创建数组'As = np.array(range(1,25) ,dtype = float)'(选择合适的'dtype'),然后通过使用'A'完成相同的操作来获得'SEMF'数组,然后使用该数组,然后您将获得所有结果的数组你可以做'the_mins = min(SEMF)'。你也许能够矢量化外层循环...... – Bakuriu