【问题标题】:Is there any way to sort this kind of array?有没有办法对这种数组进行排序?
【发布时间】:2020-07-22 10:53:13
【问题描述】:

我正在尝试对这种数组进行排序:

array([[0.        , 0.        , 0.        , 0.        , 0.        ,
    0.        , 0.        , 0.46938776, 0.        , 0.        ,
    0.        , 0.        , 0.        , 0.        , 0.        ,
    0.        , 0.        , 0.        , 0.        , 0.        ,
    0.        , 0.        , 0.        , 0.        , 0.        ,
    0.        , 0.        , 0.        , 0.        , 0.        ,
    0.        , 0.        , 0.        , 0.53061224, 0.        ,
    0.        , 0.        , 0.        , 0.        , 0.        ]])

我的代码是这样的:

def selection_sort(x):
    for i in range(len(x)):
         swap = i + np.argmin(x[i:])
         (x[i], x[swap]) = (x[swap], x[i])
    return x



selection_sort(output)

我也试过用这个:

 print(np.sort(arr))

但不幸的是没有工作任何想法?

【问题讨论】:

    标签: arrays numpy sorting


    【解决方案1】:

    让我们举个直接的例子,

    # What you did
    x = np.array([[1, 2, 3]])
    print('Shape', x.shape, 'Length', len(x))
    # What should be done to make your code work
    y = np.array([1, 2, 3])
    print('Shape', y.shape, len(y)) 
    

    如果您考虑上述示例,变量x 在列表中包含一个列表,因此是一个二维列表(为清楚起见,我不考虑 numpy 矩阵)。因此,您得到的长度是最后一个维度的大小(在本例中为 1)。相反,变量y 包含相同的值,但它只包含一个列表(不是列表中的列表,因为只有一个方括号)。所以,y 的长度是 3。

    您在问题中定义的x 的值与我在上述脚本中定义为x 的方式相同。由于变量x 的长度为1,因此您尝试执行的selection_sort 会卡在索引1 上。您可以按照我对变量 y 所做的变量声明来解决此问题。

    此外,我相信print(np.sort(arr)) 应该可以工作。它适用于我的情况。我相信您做错了什么或错过了什么,因此,您认为np.sort() 不起作用。由于信息/错误不清楚,我正在等待您的审核。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多