我有一个点列表(质心),其中一些点需要被移除。
如何在不使用循环的情况下完成此操作? 我尝试过这里给出的答案,但出现了以下错误:
list indices must be integers, not list
我的列表看起来像这样:
centroids = [[320, 240], [400, 200], [450, 600]]
index = [0,2]
我希望删除 index
中的元素。最终结果应为:
centroids = [[400, 200]]
我有一个点列表(质心),其中一些点需要被移除。
如何在不使用循环的情况下完成此操作? 我尝试过这里给出的答案,但出现了以下错误:
list indices must be integers, not list
我的列表看起来像这样:
centroids = [[320, 240], [400, 200], [450, 600]]
index = [0,2]
我希望删除 index
中的元素。最终结果应为:
centroids = [[400, 200]]
您可以在列表推导式中使用 enumerate
:
>>> centroids = [[320, 240], [400, 200], [450, 600]]
>>> index = [0,2]
>>> [element for i,element in enumerate(centroids) if i not in index]
[[400, 200]]
set
容器中,其检查成员资格的时间复杂度为O(1)。j
更改为其他内容(例如x
或v
),以明确i
是索引,而x
/v
是对象吗? - LondonRobelement
;) - Mazdak map(centroids.__delitem__, sorted(index, reverse=True))
你可以使用numpy,使用delete来完成它。
例如:
import numpy as np
centroids = np.array([[320, 240], [400, 200], [450, 600]])
index = [0,2]
np.delete(arr, index, 0)
产生
[[400, 200]]