Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何获得具有容差的两个numpy数组的相似元素_Arrays_Python 3.x_Performance_Numpy_Comparison - Fatal编程技术网

Arrays 如何获得具有容差的两个numpy数组的相似元素

Arrays 如何获得具有容差的两个numpy数组的相似元素,arrays,python-3.x,performance,numpy,comparison,Arrays,Python 3.x,Performance,Numpy,Comparison,我想比较两个不同numpy数组A和B列中的值。更具体地说,A包含一个真实实验中的值,我想与B第三列中给出的理论值相匹配 没有完美匹配,因此我必须使用公差,例如0.01。对于A中的每个值,我希望B中的0到20个匹配与所选公差有关。因此,我希望得到B中那些在a中a值公差范围内的线 更具体地说,这里有一个例子: A = array([[ 2.83151742e+02, a0], [ 2.83155339e+02, a1], [ 3.29241719e+02, a2],

我想比较两个不同numpy数组A和B列中的值。更具体地说,A包含一个真实实验中的值,我想与B第三列中给出的理论值相匹配

没有完美匹配,因此我必须使用公差,例如0.01。对于A中的每个值,我希望B中的0到20个匹配与所选公差有关。因此,我希望得到B中那些在a中a值公差范围内的线

更具体地说,这里有一个例子:

A = array([[  2.83151742e+02,   a0],
   [  2.83155339e+02,   a1],
   [  3.29241719e+02,   a2],
   [  3.29246229e+02,   a3]])


B = array([[ 0, 0,  3.29235519e+02, ...],
   [ 0, 0,  3.29240819e+02, ...],
   [ 0, 0,  3.29241919e+02, ...],
   [ 0, 0,  3.29242819e+02, ...]])
因此,这里所有的B值都与公差为0.02的A[3,0]和A[4,0]相匹配

我的首选结果是C[:,0]中A的匹配值以及C[:,0]和C[:,2]在C[:,1]中的差值:

C = array([[ 3.29241719e+02, c0,  3.29235519e+02, ...],
   [ 3.29241719e+02, c1,  3.29240819e+02, ...],
   [ 3.29241719e+02, c2,  3.29241919e+02, ...],
   [ 3.29241719e+02, c3,  3.29242819e+02, ...]
   [ 3.29242819e+02, c4,  3.29235519e+02, ...],
   [ 3.29242819e+02, c5,  3.29240819e+02, ...],
   [ 3.29242819e+02, c6,  3.29241919e+02, ...],
   [ 3.29242819e+02, c7,  3.29242819e+02, ...]])
通常,A具有形状(500,2),B具有形状(300000,11)。我可以用for循环来解决这个问题,但这需要很多时间


进行这种比较最有效的方法是什么?

我想应该是这样的

i = np.nonzero(np.isclose(A[:,:,None], B[:, 2]))[-1]
接受几个不同的公差参数


B
中靠近
A
值的值将是
B[i,2]

显示您的循环代码?谢谢!对于我当前的示例,有500个和30000个条目,每个循环只需要5 s±285 ms(7次运行的平均值±标准偏差,每个循环1次)。:-)