我想按部分对两个数组进行比较.
到目前为止,我必须获得所有数组的结果.
import numpy as np
array1 = np.array(list(np.zeros(20))+(list(np.ones(20)))+(list(2*np.ones(20))))
array2 = np.array(list(np.ones(20))+(list(np.ones(20)))+(list(3*np.ones(20))))
result = np.sum(array1 == array2)
print 'all result :' + str(result)
如何才能得到部分结果,例如数组中的第一数据20然后第二数据20和第三数据20?
结果应该是:
全部结果:20
20次点火数据的结果:0
20秒数据的结果:20
20个第三数据的结果:0
解决方法:
首先,让我们比较一下-
mask = array1 == array2
然后,得到所有款项-
allsum = mask.sum()
并获得分段(长度为20)的总和-
section_sums = mask.reshape(-1,20).sum(1)
样品运行-
In [77]: mask = array1 == array2
In [78]: mask.sum()
Out[78]: 20
In [79]: mask.reshape(-1,20).sum(1)
Out[79]: array([ 0, 20, 0])
对于通用长度
如果不能保证输入数组的长度是20的倍数,我们可以使用使用np.bincount的方法来获取section_sums,如下所示:
section_sums = np.bincount(np.arange(mask.size)//20,mask)
样品运行-
In [5]: a1=np.array(list(np.zeros(20))+(list(np.ones(20)))+(list(2*np.ones(17))))
...: a2=np.array(list(np.ones(20))+(list(np.ones(20)))+(list(3*np.ones(17))))
...:
In [6]: mask = a1==a2
In [7]: np.bincount(np.arange(mask.size)//20,mask)
Out[7]: array([ 0., 20., 0.])
标签:python-2-7,arrays,python,numpy
来源: https://codeday.me/bug/20191026/1938484.html