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