簡體   English   中英

在 python 中進行塊切片

[英]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.

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