无法从列表中删除vstack元素

时间:2015-03-31 15:04:20

标签: python python-2.7 python-3.x ros

我的列表由vstack元素组成:

     X = vstack([x,y,time])

我正在使用此代码从列表中删除点

    # Remove old points from the list
    point_tempo = []
    for i in range(0,len(self.points)):
        if self.points[i][0,0] <-0.5:
           point_tempo.append(self.points[i])
    for j in range(0,len(point_tempo)):
        self.points.remove(point_tempo[j])

我收到了这个错误:

  

文件   &#34; /home/group5/Documents/catkin_ws/src/platoon_pkgv2/nodes/bubble_odom.py" ;,   第121行,在sync_odo_cb中       self.points.remove(point_tempo [j])ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或   a.all()

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

为了找到要删除的元素,code of remove将使用==运算符遍历列表并将每个元素与要删除的元素进行比较。问题是这个运算符在vstack上不仅返回一个布尔值而且返回vstack成对布尔值。那是你的错误。

您最好做的是记录索引并按索引删除它们:

# Remove old points from the list
point_tempo = []
for i, point in enumerate(self.points)): # enumerate is your friend
    if point[0,0] < -0.5:
       point_tempo.append(i)
for i in reversed(point_tempo): # reverse order so that indices remain valid
    self.points.pop(i)