我想用ID的B排列,以除去甲元件給出的具體標ID「C」如何從python列表中刪除特定的元素?
在MATLAB我可以這樣做:
A(B == C) = []
這是我的代碼的示例:
boxes = [[1,2,20,20],[4,8,20,20],[8,10,40,40]]
boxIDs = [1,2,3]
IDx = 2
我想將第二個盒子完全從列表中刪除。
我如何在python中做到這一點?我有numpy。
我想用ID的B排列,以除去甲元件給出的具體標ID「C」如何從python列表中刪除特定的元素?
在MATLAB我可以這樣做:
A(B == C) = []
這是我的代碼的示例:
boxes = [[1,2,20,20],[4,8,20,20],[8,10,40,40]]
boxIDs = [1,2,3]
IDx = 2
我想將第二個盒子完全從列表中刪除。
我如何在python中做到這一點?我有numpy。
你可以使用numpy索引。您可以在docs中找到更多信息。對於您的情況:
import numpy as np
boxes = np.array([[1,2,20,20],[4,8,20,20],[8,10,40,40]])
boxIDs = np.array([1,2,3])
IDx = 2
In [98]: boxes[boxIDs != IDx, :]
Out[98]:
array([[ 1, 2, 20, 20],
[ 8, 10, 40, 40]])
沒有進口numpy
可以pop
出的元素。嘗試:
boxes = [[1,2,20,20],[4,8,20,20],[8,10,40,40]]
IDx = 1
pop_element = boxes.pop(IDx)
列表boxes
現在[[1, 2, 20, 20], [8, 10, 40, 40]]
和pop_element
是[4, 8, 20, 20]
PS:在Python指數從0
而不是1
開始。
在普通老式的Python,我認爲你要做到這一點:
try:
helpindex = boxIDs.index(IDx)
del boxes[index], boxIDs[index]
except ValueError:
# Already deleted
pass
請注意,如果你是依靠boxIDs
是「平行」與boxes
,你必須確保你讓他們從兩者中刪除並行。
'A [B == C] = []'。你在使用1d數組,你的'A'和'B'的大小/形狀是什麼? –
似乎不起作用。它總是刪除第一個元素? –
你可以附加[mcve](http://stackoverflow.com/help/mcve)嗎?沒有示例數據和期望輸出,很難回答你的問題。 –