提问人:chron0x 提问时间:3/26/2018 最后编辑:Cœurchron0x 更新时间:11/20/2018 访问量:111
多维切片
Multidimensional Slicing
问:
我想多次切出数组的某些部分。目前,我正在使用for循环,我想通过矩阵计算来替代它,以在速度方面获得更好的性能。foo
foo = np.arange(6000).reshape(6,10,10,10)
target = np.zeros((100,6,3,4,5))
startIndices = np.random.randint(5, size=(100))
这是我目前的方法。
for i in range(len(target)):
startIdx=startIndices[i]
target[i, :]=foo[:, startIdx:startIdx+3,
startIdx:startIdx+4,
startIdx:startIdx+5]
我试图将切片表示为数组,但找不到正确的表示形式。
答:
3赞
Divakar
3/26/2018
#1
我们可以利用基于 np.lib.stride_tricks.as_strided
的 scikit-image view_as_windows
进行有效的补丁提取,如下所示:
from skimage.util.shape import view_as_windows
# Get sliding windows (these are simply views)
WSZ = (1,3,4,5) # window sizes along the axes
w = view_as_windows(foo,WSZ)[...,0,:,:,:]
# Index with startIndices along the appropriate axes for desired output
out = w[:,startIndices, startIndices, startIndices].swapaxes(0,1)
相关:
上一个:切片跨越字符串边界?
下一个:python 中的切片列表
评论