python - 按数组范围进行 Numpy 索引
问题描述
myarr
假设我有一个这样的数组myarr.shape = (2,64,64,2)
。现在如果我定义myarr2 = myarr[[0,1,0,0,1],...]
,那么以下是正确的
myarr2.shape #(5,64,64,2)
myarr2[0,...] == myarr[0,...] # = True
myarr2[1,...] == myarr[1,...] # = True
myarr2[2,...] == myarr[0,...] # = True
...
这可以概括为切片是数组吗?也就是说,有没有办法让下面的假设代码工作?
myarr2 = myarr[...,[20,30,40]:[30,40,50],[15,25,35]:[25,35,45],..]
myarr2[0,] == myarr[...,20:30,15:25,...] # = True
myarr2[1,] == myarr[...,30:40,25:35,...] # = True
myarr2[2,] == myarr[...,40:50,35:45,...] # = True
解决方案
您可以将子数组的坐标提供给从myarray
. 我不知道您存储子数组的索引,所以我将它们放入嵌套列表中idx_list
:
idx_list = [[[20,30,40],[30,40,50]],[[15,25,35]:[25,35,45]]] # assuming 2D cutouts
idx_array = np.array([k for i in idx_list for j in i for k in j]) # unpack
idx_array = idx_array .reshape(-1,2).T # reshape
myarray2 = np.array([myarray[a:b,c:d] for a,b,c,d in i2]) # cut and combine
推荐阅读
- java - 如何转换列表
JAVA中的JsonArray - java - 如何将android中textviews中的值导出为pdf?我尝试了一些方法,但这就像截取布局并保存为 pdf
- python - 使用预定义的列转换数据框 Pandas
- c++ - 1 在 ("aba" < "a") 的输出中出现?1:0 在 c 或 c++ 程序中。为什么?
- dynamics-crm - Power 自动将 Http 请求正文作为 RemoteExecutionObject,如何从输入参数中检索特定字段
- javascript - 有没有办法将两个或多个连续 div 标签中的第一个转换为 span 标签
- javascript - 转义的 html 在 jquery html 方法中再次未转义
- android - 我使用 webview 将网站转换为应用程序。但网站背景没有出现在我的应用程序中
- arrays - 如何在 Angular 中使用两个 for 循环构建数组数组?
- javascript - 在电子的同一浏览器窗口中加载新的html