使用np.mask
,它们显示如下:
http://i4.tietuku.com/29adccd90484fe34.png
代码在这里:
ka_select = np.ma.masked_less(ka,0.001)
pa =plt.pcolor(kb_select,cmap="Set1",alpha =0.7,facecolor = "k",edgecolor = 'k',zorder =1)
kb_select = np.ma.masked_less(kb,0.001)
pb =plt.pcolor(kb_select,cmap="Set1",alpha =0.7,facecolor = "k",edgecolor = 'k',zorder =1)
我写了一些关于比较两个二维数组的代码
### repeat I defined is the estimate matrix to represent overlap or not in [i,j] position
repeat = np.zeros(ka.shape[0]*ka.shape[0]).reshape(ka.shape[0],ka.shape[1])
for i in range(0,ka.shape[0],1):
for j in range(0,ka.shape[1],1):
if (ka[i,j] == 1) & (kb[i,j] == 1) :
repeat [i,j]=1
else:
repeat[u,v] = 0
rep.append(repeat.sum())
http://i4.tietuku.com/7121ee003ce9d034.png
当有两个以上的2-d numpy数组都具有值(0,1)的相同形状时,如何对重叠频率求和?
我可以按顺序比较多个数组,但重复网格将被重新计算
更多解释
我想在ka = 1但是(kb& kc& ...)!= 1在网格[i,j](我称之为独立性如标题所示。) 如果ka只与kb比较,我可以使用 rep 来实现这一点,而且我还没有想过处理超过2个数组的方法
答案 0 :(得分:3)
为什么不使用数组的总和kb,...并测试结果元素? 一个有三个网格的例子:
import numpy
# some random arrays
ka = numpy.random.random_integers(0,1,37*31).reshape(31,37)
kb = numpy.random.random_integers(0,1,37*31).reshape(31,37)
kc = numpy.random.random_integers(0,1,37*31).reshape(31,37)
combined_rest = kb + kc
print "independance:", numpy.sum( (ka == 1) & (combined_rest < 2) )