根据 Python 中的土地 class 网格求和土地面积网格
Sum land area grid based on land class grid in Python
我有两个形状相同的网格,一个是土地class,另一个是土地面积。
示例:
土地 class
[[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]]
我需要根据土地 class 来总结土地面积,打印这样的东西会很愉快:
1 0.4
2 1.5
3 11.7
4 0.8
我导入的唯一模块是 numpy,我想尽可能避免导入其他模块。建议?
您可以进行如下操作:
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])
我有两个形状相同的网格,一个是土地class,另一个是土地面积。
示例:
土地 class
[[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]]
我需要根据土地 class 来总结土地面积,打印这样的东西会很愉快:
1 0.4
2 1.5
3 11.7
4 0.8
我导入的唯一模块是 numpy,我想尽可能避免导入其他模块。建议?
您可以进行如下操作:
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])