首页 > 解决方案 > 对 2D 数组进行迭代以索引 3D 数组,使其更具 Python 风格并跳过零值

问题描述

我有一个 2D 值数组和一个对应值的 3D 数组。2D 数组中数字的值是 3D 数组中第一个维度的索引,而 2D 数组中的值的索引与 3D 数组中最后两个维度的索引相同。

此外,如果二维数组中的值为 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]

我想知道是否有更 pythonic / numpy 的方式来实现相同的行为,这可能会导致加速。

标签: pythonnumpyindexing

解决方案


推荐阅读