gpt4 book ai didi

python - 将元组列表转换为切片列表以与 np.r_ 一起使用

转载 作者:行者123 更新时间:2023-12-03 18:43:06 24 4
gpt4 key购买 nike

在 Pandas 中,我创建了一个元组列表,表示围绕给定索引点集的一系列行:

mask = df.loc[df['Illustration']=='Example'].index
idxlist = [(i-1,i+10) for i in mask]
idxlist
[(2, 13), (48, 59), (120, 131),...]
我想使用这个元组列表中的值作为范围切片索引来调用 np.r_ ,它需要一个这种类型的列表:
df.iloc[np.r_[2:13, 48:59, 120:131,...] 
我可以通过 slice 传递我的元组列表功能:
slicelist = [slice(*(idxlist[j])) for j in range(len(idxlist))]
但是 slicenp.r_不(据我所知)相互兼容。
所以我正在寻找一种将元组列表转换为切片范围列表的方法,或者一种使用列表理解生成切片范围列表的方法,类似于我所做的 idxslice以上。我知道我可以找到一些非常不优雅的方式来做到这一点,但我正在寻找最 Pythonic 的方式,最好没有循环。谢谢。

最佳答案

无需太花哨,因为索引遵循一个模式,只需列出所有索引即可。

from itertools import chain

#mask = [3, 49, 121, ...]
m = [*chain.from_iterable([range(i-1, i+10) for i in mask])]

# or simply
m = [x for i in mask for x in range(i-1, i+10)]

# Then
df.iloc[m]

关于python - 将元组列表转换为切片列表以与 np.r_ 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65430859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com