python - 为 numpy 数组自动创建切片范围
问题描述
我已经阅读了一些答案,详细说明了如何将多个切片作为索引传递给 numpy 数组,以在数组中选择多个不相邻的范围。
我想不通的是如何自动创建切片,并将切片列表作为索引传递给感兴趣的 numpy 数组。例如,x
是一个形状为(100,)的数组,ind
是一个索引列表(单调递增)。我想做的如下所示:
slices = [ind[i]:ind[i+1] for i in chosen]
wherechosen
是一个列表,其中列出了 中特定值的索引ind
。例如,
>>> ind
array([10, 20, 29, 38, 46, 54, 66, 72, 85, 91], dtype=int64)
>>> chosen
array([0, 1, 2, 5, 7], dtype=int64)
所以ind[chosen[3]]:ind[chosen[3]+1] = 54:66
。我希望这个想法很清楚。
我能做些什么来实现这一目标?
解决方案
像这样?我不确定你的切片的开始和结束。例如 20 是第一个的结束和第二个的开始,但这适合您的示例。
slices = [list(range(ind[chosen[i]],ind[chosen[i]+1]+1)) for i in range(len(chosen))]
print(slices)
[[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], [29, 30, 31, 32, 33, 34, 35, 36, 37, 38], [54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66], [72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85]]
推荐阅读
- r - 如何添加换行符?
- r - 计算 dt 中的平均值
- docker - docker-compose 使用循环创建服务
- java - NoClassDefFound:org/apache/tools/ant/util/ReaderInputStream
- ios - 在 Swift 中生成字符串的自定义长度哈希值
- deployment - 如何在使用 VSTS 和 ANT (SALESFORCE) 进行部署时配置提交 ID
- jquery - 如何在 Bootstrap 日期选择器中禁用即将到来的日期
- go - 将数组作为函数参数传递
- cordova - Ionic socialSharing 插件无法在 iOS 上运行
- spring-boot - @ConfigurationProperties 对象在 Spring Boot 应用程序中返回 null