我有一个表示动态图像数据的嵌套列表,每个内部列表包含一个数字和一个边界框的x中心坐标。我需要聚类并通过排序获得近似的边界框x坐标。预期输出为[[100,1] ,[120,1],[151,3],[180,0]]
我已经使用Matplotlib可视化了这些数据,以深入了解其在空间中的分布。现在,我希望对这些数据执行聚类,近似坐标,并根据x中心值对其进行排序。为了帮助您更好地理解,我将提供代码和图。
import matplotlib.pyplot as plt
data = [
[[100, 1], [120, 1], [150, 3]],
[[101, 1], [119, 1], [151, 3]],
[[102, 1], [123, 1], [150, 3], [180, 0]],
[[103, 1], [154, 3], [180, 0]],
[[103, 1], [152, 3], [181, 0]],
[[101, 1], [120, 1], [180, 0]],
[[101, 1], [120, 1], [150, 3]],
[[101, 1], [119, 1], [150, 3]],
[[102, 1], [123, 1], [150, 3], [181, 0]],
[[103, 1], [153, 3], [181, 0]],
[[103, 1], [152, 3], [181, 0]],
[[101, 1], [120, 1], [180, 0]],
[[100, 1], [122, 1], [150, 3], [181, 0]],
# Add more data here
]
x_values = []
y_values = []
for sublist in data:
for subsublist in sublist:
x_values.append(subsublist[0])
y_values.append(subsublist[1])
print("X Values:", x_values)
print("Y Values:", y_values)
plt.scatter(x_values, y_values)
plt.xlabel('X Values')
plt.ylabel('Y Values')
plt.title('Scatter Plot of X and Y Values')
plt.grid(True)
plt.show()
1条答案
按热度按时间noj0wjuj1#
你可以使用DBSCAN聚类算法来实现这一点。下面是代码和结果: