【问题标题】:numpy multidimensional lookupnumpy 多维查找
【发布时间】:2022-01-08 23:13:42
【问题描述】:
lookup = numpy.array([
    [["a", "b", "c"], ["d", "e", "f"]],
    [["g", "h", "i"], ["j", "k", "l"]],
    [["m", "n", "o"], ["p", "q", "r"]],
    ])
i = numpy.array([
    [[0,0,0], [1,0,2],],
    [[2,0,1], [1,0,2],],
    ])

我想使用数组i 来访问数组lookup 中的值。 i 的尺寸为 m x n x 3(3 因为 lookup 是一个 3 维数组)。所以我想得到一个维度为 m x n 的数组,其中填充了 a[i[m][n]] 的值。所以在这种情况下预期:

out = [
["a", "i"],
["n", "i"]
]

我可以在 python 中使用 for 循环,但是我如何在 numpy 中进行呢?

【问题讨论】:

    标签: python numpy lookup-tables


    【解决方案1】:

    您可以从i 中提取坐标,并使用它们来提取lookup 的子集。

    import numpy 
    
    lookup = numpy.array([
        [["a", "b", "c"], ["d", "e", "f"]],
        [["g", "h", "i"], ["j", "k", "l"]],
        [["m", "n", "o"], ["p", "q", "r"]],
        ])
    i = numpy.array([
        [[0,0,0], [1,0,2],],
        [[2,0,1], [1,0,2],],
        ])
        
    x = i[:,:,0]
    y = i[:,:,1]
    z = i[:,:,2]
    
    out = lookup[x,y,z]
    

    输出

    [['a' 'i']
     ['n' 'i']]
    

    【讨论】:

    • 啊,谢谢哥们!!
    • 不客气!如果您的问题解决了,请不要忘记接受答案。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2021-08-06
    相关资源
    最近更新 更多