【问题标题】:Sort 2D list in ascending order按升序对二维列表进行排序
【发布时间】:2020-10-05 07:11:47
【问题描述】:

我创建了随机点并使用绘图和数据绘制了图形。然后我将此图另存为图像。

我怎样才能做到以下几点?

  • 排序这个随机点列表,下坐标到上坐标。

    示例列表:[[1,3], [1,2], [1,1]]

    目标:[[1,1], [1,2], [1,3]]

  • 并以目标列表为例:

    索引 0 = [1,1] ,索引 1 = [1,2] 等等。
    我怎样才能像这样在这些索引之间进行数学运算:Y0 - Y1/ X0 - X1

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
import cv2

points = np.random.randint(0, 9, size=(18,2))
print(points)
plt.plot(points[:,0], points[:,1], '.',color='k')


plt.savefig("graphic.png",bbox_inches="tight")
result = cv2.imread("graphic.png")
cv2.imshow("Result",result)

用随机创建的点绘制的图形。我正在尝试将这些点从较低的 Y 排序到较高的 Y 。例如,在此图形上,您可以看到最小坐标为 (1,0) ,第二个最小坐标为 (7,1) 。

【问题讨论】:

  • 排序使用sorted(lst),其中lst = [ [1,3], [1,2], [1,1] ]
  • key 完全没有必要@darry
  • 你能分享一个最小的例子@emily吗?似乎不清楚你在问什么
  • @yatu——你是对的。我自动放置键,因为我忘记了默认情况下自动排序列表的方式。
  • @yatu 我为你编辑了

标签: python list algorithm numpy matplotlib


【解决方案1】:

他们是python中称为sorted的这个函数。你知道这是一件了不起的事情,我们都喜欢它。它基本上对您提供的任何列表进行排序。它确实是一个很棒的工具,我在编码时经常使用它。你所要做的很简单:

输入

MyList = [13,7,4,4]
sortedList = sorted(MyList))

输出:

[4, 4, 7, 13]

就像您的列表已排序一样。它甚至可以对包含子列表的列表进行排序。只需将变量 MyList 更改为您自己的列表。 现在如果我们想反转它,很简单,只需将 reverse 设置为 true

MyList = [13,7,4,4]
sortedList = sorted(MyList,reverse=True)

当然这适用于字符串 还有另一种实现排序功能的方法,就像这样:

MyList = [13,7,4,4]
MyList.sort()

希望这有帮助。

【讨论】:

    【解决方案2】:

    要对 2D 列表进行排序,请使用如下 lambda:

    mylist = [[1,3], [1,2], [1,1], [0,9]]
    l1 = sorted(mylist, key = lambda elem: elem[0]) 
    l2 = sorted(mylist, key = lambda elem: elem[1])
    
    

    第一个排序在子列表中的第一个元素之后,第二个排序在第二个之后。输出不一样,

    [[0, 9], [1, 3], [1, 2], [1, 1]]
    [[1, 1], [1, 2], [1, 3], [0, 9]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-08-17
      相关资源
      最近更新 更多