python - 如何使用 Python 确定机器在给定所有位置数据的情况下移动的方向?

标签 python numpy

问题说明:

我有一个相当大的文件(最多 100 万行),其中包含来自挖矿机的数据。数据包括机器的 X 和 Y 坐标。机器应该只能向左(-X 方向)或向右(+X 方向)采矿,并且这种情况发生在“车道”中。它不应该能够再次开采同一区域,但它可以随时更改 Y 坐标(即,它可以随时更改车道)并跳过某些区域。我想确定机器在给定时间移动的方向。例如,我想查看机器向左或向右移动的位置。虽然这听起来很简单,但我遇到了一些麻烦。

我的尝试:

我目前正在查找 X 坐标差异数组的 100 个值的总和(差异数组给出了机器移动的距离)。理想情况下,如果 X 坐标在 100 点间隔内减少,则它应该向左移动,如果 X 坐标在该间隔内增加,则它应该向右移动。因此,如果总和为负数,它将向数组追加“0”100 次。我选择 100 是因为考虑到样本数量较多,我认为该值相当准确。

# miner_x = array of the x-coordinates of the machine
# miner_x_diff = numpy.diff(miner_x)
# 0 = Negative X direction
# 1 = Positive X direction

diffSample= [sum(miner_x_diff[i:i+100]) for i in range(0, len(miner_x_diff), 100)]
Direction = np.array([])
for value in diffSample:
    if value < 0:
        for _ in itertools.repeat(None, 100):
           Direction = np.append(Direction,0)
    else:
        for _ in itertools.repeat(None, 100):
            Direction = np.append(Direction,1)
# correct size 
if Direction.size > miner_x.size:
    Direction = Direction[0:Direction.size-(Direction.size-miner_x.size)]

我遇到的问题是它从左到右改变方向,反之亦然,这主要发生在变道期间。这当然是预料之中的,因为该区域周围的总和可能接近于 0。但我不确定如何使用我当前的方法来解释这种变化。有没有更准确的方法来判断机器的方向?

下面显示了使用一个特定数据集绘制机器位置图的示例(省略代码,因为它是不必要的)。黄点是我出现错误结果的位置。在这个例子中不应该有任何黄点。在这个例子中我没有显示方向颜色,但如果我说起始位置在右下角,你当然可以看到它。 Position of the machine

我将不胜感激任何帮助/建议/提示:)

编辑: 这是我想要的图片(注意绘画技巧)。请注意,我不想“看到”一条直线,只是想知道它在那些点上朝这些方向移动。绿色是起点。 desired result

最佳答案

首先使用较小的示例窗口。 100个样本点代表多少时间?间隔应该足够小,以便您可以简单地查看初始位置和最终位置之间的位移并了解该时间段的方向。 (您确实意识到,对连续数字对的差值求和与从最后一个数字中减去第一个数字相同,不是吗?)如果您在机器转动的时候发现机器,您可能会得到不确定的数据,但是前后的样本将显示一个直线向量。

关于python - 如何使用 Python 确定机器在给定所有位置数据的情况下移动的方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50677932/

相关文章:

python - 从具有不同长度值的字典生成多索引数据框

python - 直到给定百分位数的变量累积和

python - 通过指定行和列从另一个数组创建 NumPy 数组

python - 从无元素的列表中获取最大值

python - 如何获得加权高斯滤波器

python - 如何命名 TensorFlow 图中的除法运算?

python - 重新子 uuid1() 的优雅方法?

python - 如何优化 django 中自引用模型中相关记录的检索?

python - scipy.spatial 的简单 2D 凸包错误

python - 在 numpy 数组中找到最大上三角项的索引的有效方法?