路口沿情節線我有一個由子陣列狀的列表:提取最低陣列的列表中,用自己的Python
[array(.....),array(.....),array(.....),....]
所有數組的長度是相同的(基本上每個數組代表一條線)。
我想提取元素的最小值元素。所以如果每個數組有100個元素,那麼我希望最終列表的長度爲100個元素。我也想要這些線相交的點。像這樣的東西應該澄清我的意思是:
https://www.dropbox.com/s/xshkhvqp0ay3vxc/g14.png
路口沿情節線我有一個由子陣列狀的列表:提取最低陣列的列表中,用自己的Python
[array(.....),array(.....),array(.....),....]
所有數組的長度是相同的(基本上每個數組代表一條線)。
我想提取元素的最小值元素。所以如果每個數組有100個元素,那麼我希望最終列表的長度爲100個元素。我也想要這些線相交的點。像這樣的東西應該澄清我的意思是:
https://www.dropbox.com/s/xshkhvqp0ay3vxc/g14.png
我沒有聲稱這是最好的方式來做到這一點,因爲沒有完全圍繞Python思考。我在計算相圖時編寫了類似問題的解決方案。在給定的溫度下,對於不同相的一定數量的自由能函數,總體最小自由能曲線是多少,哪一個函數是每個點的最小值。
G = []
while iPhase < len(f): # loop through all free energy functions
G.append(f[iPhase](x)) # x is an array of x values
iPhase = iPhase+1
minG = G{0][:] # define an overall minimum free energy curve, starting with 0'th
minF = np.zeros(len(minG)) # prepare for index indicating which function f[i](x) is min
iPhase = 1
while iPhase < len(f):
nextF = iPhase*np.ones(len(x0, dtype=np.int)
np.less(G[iPhase],minG, nextF) # where is next free energy function less than current min
minG = np.minimum(minG, G[iPhase]) # new overall minimum
minF = np.ma.filled(np.ma.array(minF, mask=nextF), fill_value=iPhase) # new index as needed
iPhase = iPhase+1
因此,最終輸出是一個總體最小值minG,以及它來自哪個曲線的索引(minF)。現在,如果要優化交叉點,可以使用
changes = np.array(np.where(minF[:-1]!=minF[1:]))
返回指示線在哪裏交叉以及涉及哪些功能。如果他們不同的函數是真正的線y = mx * b,那麼可以通過代數來得到確切的交叉點。對於更復雜的函數,需要一個更復雜的過程(我將臨時函數定義爲兩者之間的差異,然後使用scipy.optimize.newton來獲得零)。
讓說,你有以下列表:
>>> l = [array('i', [5, 15, 1, 25]),
array('i', [5, 15, 2, 25]),
array('i', [5, 15, 3, 25])]
您可以獲取每個數組的最小值下列要求:
>>> [min(x) for x in l]
[1, 2, 3]
對不起,但我不明白你的問題的其餘部分:)
像這樣:
>>> import numpy as np
>>> np.random.seed(0)
>>> data = np.random.rand(3, 4)
>>> data
array([[ 0.5488135 , 0.71518937, 0.60276338, 0.54488318],
[ 0.4236548 , 0.64589411, 0.43758721, 0.891773 ],
[ 0.96366276, 0.38344152, 0.79172504, 0.52889492]])
>>> result = data.min(axis=1)
>>> result
array([ 0.54488318, 0.4236548 , 0.38344152])
>>>
的兩條線的交叉點可以通過代數找到 AX + B = CX + d
意味着:X =(分貝)/(AC)
因此在python中,你所要做的就是將每個數組與一個對(a,b)聯繫起來,這些可以通過從數組中獲取任意兩個點來找到,或者如果必須的話,通過最小二乘方擬合:-)
這會給你成對的交點,但這是一個N^2算法。據推測,你可以通過掃描做得更好,但在這一點上,計算幾何文本是爲了
您計算最小值的部分是'numpy.min(l,axis = 0)'。不知道關於陰謀或你的意思是交叉點。 – user2357112
數組如何表示行? – user2357112
@ user2357112通過使用類似x = array(linspace(0,2.4,100))和y = x + 2或x * 3等的東西...這將是線性的並且可以表示一條線! – hat