栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Numpy stride_tricks获取不重叠的数组块

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Numpy stride_tricks获取不重叠的数组块

import numpy as npn=4m=5a = np.arange(1,n*m+1).reshape(n,m)print(a)# [[ 1  2  3  4  5]#  [ 6  7  8  9 10]#  [11 12 13 14 15]#  [16 17 18 19 20]]sz = a.itemsizeh,w = a.shapebh,bw = 2,2shape = (h/bh, w/bw, bh, bw)print(shape)# (2, 2, 2, 2)strides = sz*np.array([w*bh,bw,w,1])print(strides)# [40  8 20  4]blocks=np.lib.stride_tricks.as_strided(a, shape=shape, strides=strides)print(blocks)# [[[[ 1  2]#    [ 6  7]]#   [[ 3  4]#    [ 8  9]]]#  [[[11 12]#    [16 17]]#   [[13 14]#    [18 19]]]]

1
in
a
(即
blocks[0,0,0,0]
)开始,到
2
(即
blocks[0,0,0,1]
)的距离只有一项。由于(在我的机器上)
a.itemsize
为4个字节,因此跨度为1* 4 =4。这为我们提供了中的最后一个值
strides = (10,2,5,1)*a.itemsize = (40,8,20,4)

从另一处开始

1
,要到达
6
(即
blocks[0,0,1,0]
)距离5(即
w
)个项目,因此跨步为5 * 4
=20。这占中倒数第二个值
strides

从另一处开始

1
,要到达
3
(即
blocks[0,1,0,0]
),便是2(即
bw
)项,因此步幅为2 * 4
=8。这占的第二个值
strides

最后,从出发

1
,到达
11
(即
blocks[1,0,0,0]
)是10(即
w*bh
)项,因此跨度为10 * 4 = 40
strides =(40,8,20,4)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/617585.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号