我想解決一個最小值問題,我可以從兩個循環中獲取最小值,但是,我真正需要的也是相應的輸出最小值的確切值。如何查找循環中的哪個輸入值產生最小輸出?
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