Сделайте итерацию по двумерному массиву для индексации трехмерного массива более питонно и пропустите нулевые значения - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть 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]

Интересно, есть ли более питонический / тупой способ добиться того же поведения, которое может привести к ускорению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...