簡體   English   中英

numpy 反轉步幅選擇

[英]numpy invert stride selection

考慮以下代碼:

aa = np.arange(16)
step = 4
bb = aa[::4]

這將選擇每 4 個元素。 是否有快速簡便的 numpy 函數來選擇bb的補碼? 我正在尋找以下輸出

array([1,  2,  3, 5,  6,  7,  9, 10, 11, 13, 14, 15])

是的,我可以生成索引然后執行np.setdiff1d ,但我正在尋找比這更優雅的東西。

如果您正在尋找簡單的單線:

np.delete(aa,slice(None,None,4))

另一個解決方案(我不知道優雅),但你可以定義一個選擇索引,然后將每四個元素設置為 False 以索引原始數組:

o = np.ones_like(s,dtype=bool)
o[::step] = False 
aa[o]

基於任意重復位置進行選擇的靈活方法是使用模數:

bb = aa[np.arange(len(aa))%step != step-1]

輸出:

array([ 0,  1,  2,  4,  5,  6,  8,  9, 10, 12, 13, 14])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM