Numpy:找到多个参数的最小表达式
Numpy: Find minimum of an expression over several parameters
是否有一种 numpy 方法可以在没有显式循环的情况下获得多个参数的表达式的最小值?
#Randomly initialize samples
SAMPLES_NUM = 200
L = np.random.rand(SAMPLES_NUM)
q1 = np.random.rand(SAMPLES_NUM)
q2 = np.random.rand(SAMPLES_NUM)
#Make the data
X = np.arange(0,1,0.01)
Y = np.arange(0,1,0.01)
X,Y = np.meshgrid(X,Y)
#Calculate Z at (x,y) as the minimum of L[i]+x(q1[i]+q2[i]) + q2[i]y
#over all i
我试过广播:
Z = np.min(L + X*(q1+q2) +Y*q2)
但由于广播问题无法使用。任何想法,或者我是否必须显式循环遍历所有 i?
使用 meshgrid
版本,我们可以扩展 X
、Y
的 dims 并引入 broadcasting
,当这些操作与其他输入一起执行时,最后沿最后一个轴使用 min
-
np.min(L + X[...,None]*(q1+q2) + Y[...,None]*q2,axis=2)
是否有一种 numpy 方法可以在没有显式循环的情况下获得多个参数的表达式的最小值?
#Randomly initialize samples
SAMPLES_NUM = 200
L = np.random.rand(SAMPLES_NUM)
q1 = np.random.rand(SAMPLES_NUM)
q2 = np.random.rand(SAMPLES_NUM)
#Make the data
X = np.arange(0,1,0.01)
Y = np.arange(0,1,0.01)
X,Y = np.meshgrid(X,Y)
#Calculate Z at (x,y) as the minimum of L[i]+x(q1[i]+q2[i]) + q2[i]y
#over all i
我试过广播:
Z = np.min(L + X*(q1+q2) +Y*q2)
但由于广播问题无法使用。任何想法,或者我是否必须显式循环遍历所有 i?
使用 meshgrid
版本,我们可以扩展 X
、Y
的 dims 并引入 broadcasting
,当这些操作与其他输入一起执行时,最后沿最后一个轴使用 min
-
np.min(L + X[...,None]*(q1+q2) + Y[...,None]*q2,axis=2)