首页 > 解决方案 > 如何根据 y 坐标对二维数组进行排序

问题描述

我有代码迭代 x 中的某个间隔并计算计算值和预期值 y 之间的差异。

def find_alpha_max():
    alpha=0
    alphamax=1
    alphamin=0
    n=10
    alphastep=(alphamax-alphamin)/n
    data= np.zeros([n,2])
    for i in range(1,len(data)):
        alpha=i*alphastep
        data[i,0] = alpha
        data[i,1] = abs(wavelen(alpha)-121)
    print(data)

def wavelen(alpha):
    val1,val2= energy_levels(alpha)
    transition= abs(val1-val2)
    wavelength=(h*c/abs(transition*(1e-19)))/(1e-9)
    return wavelength

这给出了输出:

[[ 0.          0.        ]
 [ 0.1        61.37844557]
 [ 0.2        47.07247138]
 [ 0.3        33.72835938]
 [ 0.4        21.50950112]
 [ 0.5        10.44535124]
 [ 0.6         0.49201146]
 [ 0.7         8.43091667]
 [ 0.8        16.41859421]
 [ 0.9        23.56862328]]

我想要做的是根据数组的 y 值从最小到最大对数组的顺序进行排序,这样我就可以获得一个可用于数值最小化的 x 值。我该怎么做呢?

标签: pythonnumpy-ndarray

解决方案


您可以使用以下内容:

Sorted(your_array, lambda your_array:your_array[i])

这将允许您按较大数组中每个一维数组的第 i 个元素进行排序。


推荐阅读