【发布时间】:2017-08-16 03:33:05
【问题描述】:
我刚开始学习 Numpy(和 Scipy)。我编写了一个程序来计算 f(x) 函数的绘图点。 (f(x) 不能明确给出,因为我必须对每个点进行数值求解。)我将值放在二维数组中:
[[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]。)。
我有两个问题:
-
我是否采用了存储数据点的好方法,或者 NumPy/SciPy 中是否有特定的对象来执行此操作?
-
是否有内置的 NumPy/SciPy 函数来查找我的数据集的最大值?
这是有问题的代码部分:
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
【问题讨论】: