Если в numpy существует функция, которая вычисляет максимальную длину последовательных чисел в трехмерном массиве вдоль выбранной оси?
Я создал такую функцию для массива 1d (прототип функции - max_repeated_number(array_1d, число)):
>>> 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.
Я делаю для трехмерного массива следующих размеров (A, B, C):
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, число):
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