У меня есть 2D-массив значений и 3D-массив соответствующих значений.Значение числа в 2D-массиве является индексом для первого измерения в 3D-массиве, в то время как индекс значения в 2D-массиве такой же, как в 3D-массиве для последних двух измерений.
Кроме того, если значение в массиве 2D равно 0, поиск не должен выполняться, а значение должно оставаться 0.
Я написал простой скрипт с двумя циклами, повторяющимися по строкам,и затем над элементами, которые выглядят следующим образом:
c = np.array(np.random.rand(424,512)*10,dtype=np.int32)
mean_error_map = np.random.rand(42,424,512)
mean_map = np.zeros(shape=(c.shape[0],c.shape[1]))
for x,element_row in enumerate(c):
if element_row.sum() == 0:
continue
for y,element in enumerate(element_row):
if element == 0:
continue
mean_map[x,y] = mean_error_map[int(element),x,y]
Интересно, есть ли более питонический / тупой способ добиться того же поведения, которое может привести к ускорению.