根据具有方差的样本点生成2d点

时间:2018-03-09 09:00:28

标签: python

我有一个情节,我通过2D网格上的鼠标点击事件收集10分[-55 - 55,-35,35]。之后,我添加一个代表10个点的标签并将其保存在列表中。

以下是结果列表的示例条目:

<class 'list'>: [[-38.39, 20.3], [-38.25, 12.27], [-38.39, 5.0], [-38.96, -3.48], [-37.54, -15.61], [-26.33, -7.73], [-28.32, 3.03], [-26.47, 14.24], [-20.08, 15.15], [-18.38, -1.36], [1.0]]

现在我想基于10个样本点生成类似的列表条目。以后数据应作为模型的训练数据,以确定10个点的不同形态。

我希望在一定程度的差异内生成类似点的提示。

3 个答案:

答案 0 :(得分:1)

列表理解可行。我只是举个简单的例子:

import numpy as np
point = [-38, 20.3]

[[a, b] for a in np.arange(point[0]-1, point[0]+1.2, 0.2) for b in np.arange(point[1]-1, point[1]+1.2, 0.2)]

Ouput:
[[-39.0, 19.3],
 [-39.0, 19.5],
 [-39.0, 19.7],
 [-39.0, 19.9],
 [-39.0, 20.099999999999998],
 [-39.0, 20.299999999999997],
 [-39.0, 20.499999999999996],
 [-39.0, 20.699999999999996],
 [-39.0, 20.899999999999995],
 [-39.0, 21.099999999999994],
 [-39.0, 21.299999999999994],
 [-38.8, 19.3],
 [-38.8, 19.5],
 [-38.8, 19.7],
 [-38.8, 19.9],
 [-38.8, 20.099999999999998],
 [-38.8, 20.299999999999997],
 [-38.8, 20.499999999999996],
 [-38.8, 20.699999999999996],
 [-38.8, 20.899999999999995], ...... etc

对于逼近问题0.x9999999999999,您只需使用round(val, 3)

round(20.029999999999998, 3)
Out[182]: 20.03

要回到第一点,您现在只需要在列表中循环,并且每次都生成一组新的点。

new_set = list()
for p in point_list:
    new_set.append([[round(a,3), round(b,3)] for a in np.arange(p[0]-1, p[0]+1.2, 0.2) for b in np.arange(p[1]-1, p[1]+1.2, 0.2)])

希望它有所帮助!

答案 1 :(得分:1)

因此,您有一个坐标列表(x, y)和一个方差var。您可以以随机方式生成新坐标,如下所示:

(x, y) --> (random(x-var, x+var), random(y-var, y+var))

答案 2 :(得分:1)

只需添加随机x / y值即可轻松对新位置进行采样。我已经附上了这种抽样方法的结果。

points = [[-38.39, 20.3], [-38.25, 12.27], [-38.39, 5.0], [-38.96, -3.48], [-37.54, -15.61], [-26.33, -7.73], [-28.32, 3.03], [-26.47, 14.24], [-20.08, 15.15], [-18.38, -1.36]]
newPoints = []
for point in points:
    singleSet = []
    for i in range(0, 10):
        singleSet.append([point[0] + uniform(-0.5, 0.5), point[1] + uniform(-0.5, 0.5)])
    newPoints.append(singleSet)

enter image description here