Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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
Python 确定两个numpy阵列不同的标记_Python_Numpy_Array Difference - Fatal编程技术网

Python 确定两个numpy阵列不同的标记

Python 确定两个numpy阵列不同的标记,python,numpy,array-difference,Python,Numpy,Array Difference,我有两个长numpy数组,都有508个元素。我想得到它们不同之处的指数。我在这里看到的大多数解决方案都会对数组进行排序,这在我的例子中并不适用 范例 arr_1=[0,1,4,0,2,2,0,3,5,…,5,5,6] arr_1=[0,1,0,0,0,2,0,3,0,…,5,0,6] 希望返回类似于: solut=[0,0,1,0,1,0,0,0,1,…,0,1,0] 甚至 solut=[2,4,8,…,n-2] 在numpy中有没有一种有效的方法可以做到这一点?您只需编写arr=arr\u 1

我有两个长numpy数组,都有508个元素。我想得到它们不同之处的指数。我在这里看到的大多数解决方案都会对数组进行排序,这在我的例子中并不适用

范例

arr_1=[0,1,4,0,2,2,0,3,5,…,5,5,6]

arr_1=[0,1,0,0,0,2,0,3,0,…,5,0,6]

希望返回类似于:

solut=[0,0,1,0,1,0,0,0,1,…,0,1,0]

甚至

solut=[2,4,8,…,n-2]


在numpy中有没有一种有效的方法可以做到这一点?

您只需编写
arr=arr\u 1==arr\u 2
。这段代码为您提供了一个布尔数组,如果它们相等,则为true;如果不相等,则为false。然后,您可以使用
np.where
查找数组相等或不相等的索引。

我将按照以下方式使用
numpy.equal

import numpy as np 
arr_1 = [0, 1, 4, 0, 2, 2, 0, 3, 5, 5, 5, 6]
arr_2 = [0, 1, 0, 0, 0, 2, 0, 3, 0, 5, 0, 6]
solut = (~np.equal(arr_1, arr_2)).astype(int)
print(solut)
输出

[0 0 1 0 1 0 0 0 1 0 1 0]
[ 2  4  8 10]
说明:使用
numpy.equal
获得
False
s和
True
s数组,其中
arru 1
-
arru 2
对相等,然后求反(使用
~/code>),最后将布尔值转换为
int
。如果您对非零索引感兴趣,请使用
numpy.flatnonzero
函数:

indices = np.flatnonzero(solut)
print(indices)
输出

[0 0 1 0 1 0 0 0 1 0 1 0]
[ 2  4  8 10]

在这种情况下,在输入到
numpy.flatnonzero

之前,您不需要将数组转换为
int
s,还有
np.flatnonzero
适用于1d数组,它是
solute
的。@Kevin I updated可能会回答这个问题