Jos*_*ori 1 python int list concatenation slice
我已经将黑白图像加载为numpy数组.数组形状等于图像中的像素.我想提取某些范围的像素值,例如,
numpy_array_to_slice[160:300,28:43]
Run Code Online (Sandbox Code Playgroud)
等等,但我不想硬编码索引号.相反,我想从值列表中加载索引值.例如,我有一个索引值列表,如:
listofindexvalues = [['160:300,28:43'],['160:300,40:55'],['160:300,28:43']]
Run Code Online (Sandbox Code Playgroud)
所以有效我想要的东西:
numpy_array_to_slice[listofindexvalues[0]]
Run Code Online (Sandbox Code Playgroud)
这将取代:
numpy_array_to_slice['160:300,28:43']
Run Code Online (Sandbox Code Playgroud)
我尝试了各种不起作用的东西:
first,second = str(index_list[19]).replace('[','').replace(']','').replace('\'','').split(':') ##for just one side of an index value, such as 28:59
Run Code Online (Sandbox Code Playgroud)
并尝试传递这样:
numpy_array_to_slice[int(first)+':'+int(second]
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我无法连接这些值.有没有办法实现这个目标?
切片是语法,而不是字符串.请参阅Slicings表达式参考文档:
切片的语义如下.使用
__getitem__()从切片列表构造的密钥对主数据库进行索引(使用与正常预订相同的方法),如下所示.如果切片列表包含至少一个逗号,则该键是包含切片项的转换的元组 ; 否则,单个切片项的转换是关键.作为表达式的切片项的转换是该表达式.一个适当的切片的转化是一个slice对象(参见标准类型层次结构),其start,stop并且step属性是给定为分别下限,上限和步幅,所述表达式的值,用None缺少的表达式.
大胆强调我的.
您可以slice()通过slice()直接创建对象来绕过此转换(从切片语法到对象); 你可以把它们放在元组中,如果需要的话.
所以
numpy_array_to_slice[160:300,28:43]
Run Code Online (Sandbox Code Playgroud)
相当于
box = slice(160, 300), slice(28, 43)
numpy_array_to_slice[box]
Run Code Online (Sandbox Code Playgroud)
我省略了这个step论点; None省略时默认为.
将其扩展到您的列表将是:
listofindexvalues = [
(slice(160, 300), slice(28, 43)),
(slice(160, 300), slice(40, 55)),
(slice(160, 300), slice(28, 43))
]
for box in listofindexvalues:
sliced_array = numpy_array_to_slice[box]
Run Code Online (Sandbox Code Playgroud)