[英]Block slicing with step in python
我想知道是否可以對 python 中的每個第 n 個塊進行子索引。 有可能做
a = [1, 2, 3, 4, 5, 6, 7, 8]
a[::2]
它給出了每一秒的值
[1, 3, 5, 7]
但是如果我想要類似的東西怎么辦:
[1, 2, 5, 6]
所以基本上每個長度為2的第二個塊。這是否可以通過某種方式進行子索引?
你可以像這樣解決
import itertools
a = [1, 2, 3, 4, 5, 6, 7, 8]
b = list(itertools.chain(*[a[i:i+2] for i in range(0, len(a), 2)][::2]))
assert b == [1,2,5,6]
有趣的問題。
您可以執行以下操作,但您會丟失數組的順序
a[::4] + a[1::4]
Output:
[1, 5, 2, 6]
使用 numpy 您可以創建一個模數如下的掩碼:
import numpy as np
mod4 = np.arange(len(a)) % 4
np.array(a)[(mod4==0) | (mod4==1)]
Output:
array([1, 2, 5, 6])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.