python – 测量连续点的曲率
我有一个点列表(数量级为数万),我需要使用
python识别两件事:
1-这些点中的连续点组(abs(x2-x1)< = 1和abs(y2-y1)< = 1) 2-每组的弧度/半径 以下是一组示例:
解决方法
这将为您提供群集和
list of angles:
from sklearn.cluster import DBSCAN from scipy.spatial import distance from scipy.optimize import curve_fit import numpy as np,math data = [[331,522]] #.... def angle(pt1,pt2): x1,y1 = pt1 x2,y2 = pt2 inner_product = x1*x2 + y1*y2 len1 = math.hypot(x1,y1) len2 = math.hypot(x2,y2) return math.acos(inner_product/(len1*len2)) db=DBSCAN(eps=1,min_samples=2,metric='precomputed').fit( distance.squareform(distance.pdist(data))) core_samples = db.core_sample_indices_ labels = db.labels_ n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0) unique_labels = set(labels) for k in unique_labels: class_members = [index[0] for index in np.argwhere(labels == k)] cluster_core_samples = [index for index in core_samples if labels[index] == k] curve = np.array([data[index] for index in class_members]) print k,curve,[angle(p1,p2) for p1,p2 in zip(curve,curve[1:])] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |