我创建了随机点,并使用绘图和数据绘制了图形。然后,我将该图另存为图像。
我该怎么做?
将此随机点列表排序,从低坐标到高坐标。
示例列表:[[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)。
答案 0 :(得分:0)
这是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()
希望这会有所帮助。
答案 1 :(得分:0)
要对 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]]