您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Numpy Routine(s)在2d数组中创建一个常规网格

5b51 2022/1/14 8:22:12 python 字数 1314 阅读 551 来源 www.jb51.cc/python

我正在尝试编写一个函数,在2d数组中创建一个5像素乘5像素的规则网格.我希望numpy.arange和numpy.repeat的某些组合可能会这样做,但到目前为止我还没有运气,因为numpy.repeat只会沿着同一行重复. 这是一个例子: 假设我想要一个2d阵列形状(20,15)内的5×5网格.它应该看起来像: array([[ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2,

概述

这是一个例子:

假设我想要一个2d阵列形状(20,15)内的5×5网格.它应该看起来像:

array([[ 0,1,2,2],[ 0,[ 3,3,4,5,5],[ 6,6,7,8,8],[ 9,9,10,11,11],11]])

我意识到我可以简单地使用循环和切片来实现这一点,但我可以将它应用于非常大的数组,我担心它的性能太慢或不切实际.

有人能推荐一种方法来实现这一目标吗?

提前致谢.

更新:

提供的所有答案似乎都运作良好.任何人都可以告诉我哪些对大型阵列使用效率最高?通过大阵列,我的意思是它可以是100000 x 100000或更多,具有15 x 15网格单元尺寸.

m,n,d = 20,15,5
arr = np.empty((m,n),dtype=np.int)
arr_view = arr.reshape(m // d,d,n // d,d)
vals = np.arange(m // d * n // d).reshape(m // d,1)
arr_view[:] = vals

>>> arr
array([[ 0,11]])

总结

以上是编程之家为你收集整理的python – Numpy Routine(s)在2d数组中创建一个常规网格全部内容,希望文章能够帮你解决python – Numpy Routine(s)在2d数组中创建一个常规网格所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶