gpt4 book ai didi

python - 找到一种更简单的方法来比较两个二维数组的独立性

转载 作者:太空宇宙 更新时间:2023-11-04 00:56:53 26 4
gpt4 key购买 nike

我的问题

1。简介

  • ka & kb是两个31*37的二维数组
  • 它们包含 2 个值:0 和 1
  • 独立性:只有ka[i, j] = 1时的网格数量

使用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)

2。我的早期作品

  • 与两个数组 ka 和 kb 进行比较。
  • 如果index[i,j]中的值都等于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())
  • rep:这两个二维数组的重叠频率。

http://i4.tietuku.com/7121ee003ce9d034.png

3。我的问题

当有两个以上的二维 numpy 数组都具有相同的形状且值为 (0,1) 时,如何对重叠频率求和?
我可以按顺序比较多个数组,但重复网格将被重新计算

更多说明

我想在 ka = 1 但 (kb & kc & ...) != 1 at grid[i,j] 时对数组 ka 的数量求和(我称之为独立性显示在标题中)。
如果ka只和kb比较,我可以用rep来实现,我还没有想出处理超过2个数组的方法

最佳答案

为什么不使用数组 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) )

关于python - 找到一种更简单的方法来比较两个二维数组的独立性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34695318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com