在双评价的灾害评价中,需要计算信息量,下面是基于numpy和模拟数据,信息量计算过程。
两个矩阵 a
,b
,每个矩阵中,矩阵中的0
相当与空值(不参与计算)。
矩阵b表示空间地貌类型(b矩阵的值表示一个地貌类型),矩阵a表示某一灾害的空间分布(a矩阵中的值本身并不关注,关心的是a有值元素的数量)
1. 首先,计算a
在b
空间范围的比例,即需要计算b
区域中,存在a
的比例(像元数量比)
通过numpy.sum( b!= 0)
或b[numpy.where(b!=0)].size
,可以获取b
和a
的非空像元数量
计算a
在b
空间范围的比例
2. 计算b
中每一个地貌类型的a
灾害的比例,从而计算信息量
通过numpy.unique(b[numpy.where(b !=0)])
,获取b
中所有地貌类型
先通过循环,计算b
中每一种地貌类型,存在a
灾害的比例,并打印出来
在上面的基础上,修改代码,实现计算每种地貌类型的a
灾害的信息量
3. b
中每个地貌类型的a
灾害信息量赋值
修改上面的代码,实现b
中的每一个地貌类型的值为对应的a
灾害的信息量