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

python – 通过多维数组的所有1维子阵列进行迭代

5b51 2022/1/14 8:23:24 python 字数 1209 阅读 571 来源 www.jb51.cc/python

在 python中迭代遍历n维数组的所有一维子数组的最快方法是什么? 例如考虑3-D数组: import numpy as np a = np.arange(24) a = a.reshape(2,3,4) 迭代器的期望产量序列是: a[:,0,0] a[:,0,1] .. a[:,2,3] a[0,:,0] .. a[1,:,3] a[0,0,:] .. a[1,2,:] 这是一个这样一个迭代

概述

例如考虑3-D数组:

import numpy as np 
a = np.arange(24)
a = a.reshape(2,3,4)

迭代器的期望产量序列是:

a[:,0]
a[:,1]
..
a[:,2,3]
a[0,:,0]
..
a[1,:]
..
a[1,:]
def iter1d(a):
    return itertools.chain.from_iterable(
        numpy.rollaxis(a,axis,a.ndim).reshape(-1,dim)
        for axis,dim in enumerate(a.shape))

这将按照你在帖子中给出的顺序生成子数组:

for x in iter1d(a):
    print x

版画

[ 0 12]
[ 1 13]
[ 2 14]
[ 3 15]
[ 4 16]
[ 5 17]
[ 6 18]
[ 7 19]
[ 8 20]
[ 9 21]
[10 22]
[11 23]
[0 4 8]
[1 5 9]
[ 2  6 10]
[ 3  7 11]
[12 16 20]
[13 17 21]
[14 18 22]
[15 19 23]
[0 1 2 3]
[4 5 6 7]
[ 8  9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]

这里的技巧是遍历所有的轴,并且对于每个轴将阵列重新形成二维数组,其中的行是所需的一维子阵列.

总结

以上是编程之家为你收集整理的python – 通过多维数组的所有1维子阵列进行迭代全部内容,希望文章能够帮你解决python – 通过多维数组的所有1维子阵列进行迭代所遇到的程序开发问题。


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

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

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


联系我
置顶