8
如何刪除數組中的每個第n個元素?Python刪除數組中的每個第n個元素
import numpy as np
x = np.array([0,10,27,35,44,32,56,35,87,22,47,17])
n = 3 # remove every 3rd element
...有點像x[0::n]
的反義詞?我試過這個,但當然這是行不通的:
for i in np.arange(0,len(x),n):
x = np.delete(x,i)
這實際上比np.delete(x,slice(None,None,3))要好得多。 – Jaime
@Jaime非常好的觀察 - 沒想到檢查'np.delete'是否帶有本地'slice'對象!儘管有一百萬個數組(事實上它的速度非常慢*),但似乎沒有任何速度上的優勢 - 但很高興知道 - 謝謝。 –
這很奇怪......在我的系統中,移除一個100萬長項目數組的每個第三項大約比使用slice快1.7倍:'a = np.random.rand(1e6); %timeit np.delete(a,np.arange(0,1e6,3)) - > 100循環,最好是3:每循環14.5 ms; %timeit np.delete(a,slice(None,None,3)) - > 100個循環,最好是3:每個循環8.41 ms。 – Jaime