【问题标题】:Sum land area grid based on land class grid in PythonPython中基于土地类网格的土地面积网格求和
【发布时间】:2015-04-20 09:16:24
【问题描述】:

我有两个形状相同的网格,一个是土地类别,另一个是土地面积。

示例:
土地类

[[1 4 3],  
 [3 2 3],  
 [1 3 3]]  

土地面积

[[0.3 0.8 2.0],  
 [5.0 1.5 0.5],  
 [0.1 1.0 3.2]]  

我需要根据土地等级来总结土地面积,打印这样的东西会很有趣:

1 0.4  
2 1.5  
3 11.7  
4 0.8

我唯一导入的模块是 numpy,如果可能的话,我想避免导入其他模块。有什么建议吗?

【问题讨论】:

    标签: python list numpy matrix grid


    【解决方案1】:

    你可以这样做:

    import numpy as np
    
    lc=np.array([[1, 4, 3],
                [3, 2, 3],
                [1, 3, 3]])
    
    la=np.array([[0.3, 0.8, 2.0],
                [5.0, 1.5, 0.5],
                [0.1, 1.0 ,3.2]])
    
    
    
    calc_areas = []
    
    for v in np.unique(lc):
        print(v, np.sum(la[lc==v]))
        calc_areas.append([v, np.sum(la[lc==v])])
    
    
    calc_areas.sort(key=lambda v: v[1], reverse=True)
    print("Max area", calc_areas[0])   
    

    给予:

    1 0.4
    2 1.5
    3 11.7
    4 0.8
    
    ('Max area', [3, 11.699999999999999])
    

    【讨论】:

    • 你将如何打印一个额外的行来指示面积最大的类?因此,在这种情况下,它只会打印出 3(因为它是最大的土地类别)。
    • @kwikstrom 您可以对区域进行排序。我修改了这个例子。
    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2018-05-16
    • 2021-07-30
    • 2012-07-05
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多