在一个循环中,我得到一个切片列表
qw = ['0:10, 0:20', '10:20, 20:40', '20:30, 40:60']
也就是说,每个切片都表示为一个字符串。之后我尝试将此切片应用于数组
im = [[[0,0,0], [0,0,0]], [[0,0,0], [0,0,0]], [[0,0,0], [0,0,0]]...]
但是由于 是一个字符串,那么它将不起作用。我试图这样做,但我意识到我会回到这条线上
ind = i.split(',')
ind = [int(i) for i in ind]
int_ind = ','.join(ind)
有必要通过给定的切片获取数组对象。
for i in qw:
print(img[i])
我必须是一个正在运行的切片,即
img[0:10, 0:20]
您需要从字符串中提取所有数字(这可以使用正则表达式来完成),将它们转换为整数
创建切片对象。这里的意思是当两个逗号分隔的切片是两个的元组时,视图切片
img[a:b]是一个类型的对象。那些。:slicesliceimg[0:10]这与img[slice(0, 10)](或img[slice(0, 10, None)], 但空切片步骤可以省略)相同img[0:10, 0:20]-img[(slice(0, 10), slice(0, 20))]。您可以使用以下代码验证这一点:
因此,您需要形成一个形式的对象,
(slice(0, 10), slice(0, 20))从第一步开始替换数字。结果:
如果您查看上一个问题的上下文,那么您可以立即在循环中形成切片对象列表,而不是形成切片字符串: