Python Numpy-查找最大点和数据点的值
我刚开始学习Numpy(和Scipy)。我编写了一个程序来计算f(x)函数的绘图点。(f(x)不能明确给出,因为我必须数值求解每个点的方程。)我将值放在二维数组中:Python Numpy-查找最大点和数据点的值,python,numpy,scipy,Python,Numpy,Scipy,我刚开始学习Numpy(和Scipy)。我编写了一个程序来计算f(x)函数的绘图点。(f(x)不能明确给出,因为我必须数值求解每个点的方程。)我将值放在二维数组中: [[x1, x2, x3, ...], [f(x1), f(x2), f(x3), ...]] 我现在的目标是找到f(x)函数的最大值,并得到它的位置xm和值f(xm)。当然,我可以很容易地做到这一点,但这似乎是NumPy肯定有一个简单的功能。我只找到了numpy.amax,但它只返回每个轴上的最大值。(例如n
[[x1, x2, x3, ...],
[f(x1), f(x2), f(x3), ...]]
我现在的目标是找到f(x)函数的最大值,并得到它的位置xm和值f(xm)。当然,我可以很容易地做到这一点,但这似乎是NumPy肯定有一个简单的功能。我只找到了numpy.amax
,但它只返回每个轴上的最大值。(例如numpy.amax([[1,3,2],[5,7,9]],axis=1)返回[3,9])
我有两个问题:
def get_max(args):
ti_0 = sp.pi / 2.0 + 1E-10
ti_max = sp.pi - 1E-10
iters = 10000
step = (ti_max - ti_0) / iters
ti = ti_0
result = np.empty((2, iters), float_) #the dataset, aim is to find the point where ret_energy is maximal
for i in range(0, iters):
tret = find_return_time(x, ti)
ret_energy = ekin(tret, ti)
ret_time = tret / sp.pi
result[i, 0] = ret_time
result[i, 1] = ret_energy
ti += step
emax = None
#emax = find_maximal_return_energy(result) #-> ???
return emax
data = np.array([[2, 4, 6, 8],[1, 3, 9, 7]])
x = data[0,:]
f = data[1,:]
i = np.argmax(f)
print x[i], f[i]
将(6,9)打印为最大值为f(x)的(x,f(x))对。请注意,argmax
仅返回第一次出现的最大值。如果f
的最大值可能出现多次,并且您需要x
的所有值,那么您可以这样做
maxvalue = np.max(f)
print x[f == maxvalue], maxvalue
我想是的
2-argmax返回最大值的索引,以便您可以检索该值及其对应的x值
idx = result[1].argmax()
xm = result[0,idx]
fxm = result[1,idx]
出于兴趣:为什么
数据[1,:]
比数据[1]
更受欢迎?在这种情况下,这没有什么区别;这只是我的一个习惯。我经常以转置格式存储(x,y)数据,然后我必须写入data[:,1]
以获得y
值。