我的列表由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()
我错过了什么吗?
答案 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)