【问题标题】:How do search through a numpy array to find a corresponding value of two coordinates?如何通过一个 numpy 数组搜索找到两个坐标的对应值?
【发布时间】:2020-06-18 18:47:46
【问题描述】:

我有一个包含 3 列的数组:X、Y 和速度。如何编写一个函数,以便我可以通过输入 X、Y 坐标来搜索数组,并且该函数返回该索引的相应速度值? 假设我的数组如下:

srcxy_deltv = [[2500 0 3.4123]
              [23000 0 3.4213]
              [23500 0 3.4303]
              ...
              [33675 25500 0.49377]
              [33725 25500 0.49878]
              [33775 25500 0.50381]]

第一列是 X,第二个坐标是 Y,第三个是速度。我希望能够将 X 和 Y 值都输入到函数中以返回速度。例如:

srcxy(2500,0)

这应该返回值 3.4123

【问题讨论】:

    标签: python arrays function numpy


    【解决方案1】:

    您可以像这样进行查找:

    srcxy_deltv = np.array(srcxy_deltv)
    
    def srcxy(x,y, data=srcxy_deltv):
        return srcxy_deltv[(srcxy_deltv[:,:2] == [2500,0]).all(1),-1][0]
    
    srcxy(2500,0)
    # 3.4123
    

    如果您对其他包开放,pandas 可能是一个不错的选择:

    df = pd.DataFrame(srcxy_deltv).set_index([0,1])
    
    df.loc[(2500,0)].iloc[0]
    # 3.4123
    
    df.loc[(33725, 25500)].iloc[0]
    # 0.49878
    

    【讨论】:

    • 谢谢伙计,正是我需要的!只需将 == [2500, 0] 更改为 == [x, y] :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多