在计算0-1图像2d-熵时,我需要得到相邻灰度概率分布:
img=np.random.randint(0,2,(64,64))
avg=avgpool2d(img,kernel_size=3,padding=1).numpy() * 9
avg = avg.astype(np.int32)
distribution=np.zeros((2,9))
for i,j in zip(img.flat,avg.flat):
distribution[i,j]+=1
我想避免使用numpy的方式循环,但花哨的索引似乎在这里不起作用:
a=np.zeros((3,))
b=np.array([1,0,0])
a[b]+=1 # a=[1,1,0] not [2,1,0]
所以
img=np.random.randint(0,2,(64,64))
avg=avgpool2d(img,kernel_size=3,padding=1).numpy() * 9
avg = avg.astype(np.int32)
distribution=np.zeros((2,9))
distribution[img,avg]+=1
给出错误结果
有没有一种优雅的方法可以在两个(或更多)数组之间计数?
1条答案
按热度按时间o2g1uqev1#
使用
numpy.unique
:或
numpy.add.at
(就位):输出: