Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy-查找最大点和数据点的值_Python_Numpy_Scipy - Fatal编程技术网

Python Numpy-查找最大点和数据点的值

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

我刚开始学习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
    
  • 您可以使用以下功能:

    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
    值。