2015-03-31 2 views
1

Мой список формируется из vstack элементов:Невозможно удалить 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()

Я что-то упустил?

ответ

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) 
+0

Спасибо человеку. Это сработало для меня. –

Смежные вопросы