4

numpy に存在する場合、選択した軸に沿って 3D 配列の連続する数字の最大長を計算する関数はありますか?

1次元配列用にそのような関数を作成しました(関数のプロトタイプはmax_repeated_number(array_1d, number)です):

>>> import numpy
>>> a = numpy.array([0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0])
>>> b = max_repeated_number(a, 1)
>>> b
4

そして、軸= 0に沿った3D配列に適用したいと思います。

次の次元 (A、B、C) の 3 次元配列に対して行います。

result_array = numpy.array([])
for i in range(B):    
     for j in range(C):
          result_array[i,j] = max_repeated_number(my_3d_array[:,i,j],1)

しかし、ループのために計算時間が非常に長くなります。Python でループを回避する必要があることはわかっています。

ループなしでそれを行う方法が存在する場合は?

ありがとう。

PS: max_repeated_number(1d_array, number) のコードは次のとおりです。

def max_repeated_number(array_1d,number):
    previous=-1
    nb_max=0
    nb=0
    for i in range(len(array_1d)):
        if array_1d[i]==number:
            if array_1d[i]!=previous:
                nb=1
            else:
                nb+=1
        else:
            nb=0

        if nb>nb_max:
            nb_max=nb

        previous=array_1d[i]
    return nb_max
4

1 に答える 1