无法从列表中删除 vstack 元素

Can't remove vstack element from a list

我的列表由 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])

我收到这个错误:

File "/home/group5/Documents/catkin_ws/src/platoon_pkgv2/nodes/bubble_odom.py", line 121, in sync_odo_cb self.points.remove(point_tempo[j]) ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我是不是漏掉了什么?

code of remove 为了找到要删除的元素,遍历列表并将每个元素与要删除的元素进行比较,使用 == 运算符。问题是这个运算符在 vstack 上不只是 return 布尔值,而是 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)