【发布时间】:2019-02-02 18:12:13
【问题描述】:
我可以通过比较两个数组找到更改值的索引吗?
例如;
array1 = [1, 2 ,3]
array2 = [1, 2, 4]
我想通过比较这两个数组来找到变化值的索引。对于这个例子,这应该是2。
我正在使用 numpy 来比较两个数组。但我找不到更改值的索引。
【问题讨论】:
标签: python arrays python-3.x numpy
我可以通过比较两个数组找到更改值的索引吗?
例如;
array1 = [1, 2 ,3]
array2 = [1, 2, 4]
我想通过比较这两个数组来找到变化值的索引。对于这个例子,这应该是2。
我正在使用 numpy 来比较两个数组。但我找不到更改值的索引。
【问题讨论】:
标签: python arrays python-3.x numpy
这是一个非 numpy 解决方案。您可以将enumerate() 与zip() 一起使用:
array1 = [1,2,3]
array2 = [1,2,4]
print([i for i, (x, y) in enumerate(zip(array1, array2)) if x != y])
# [2]
【讨论】:
由于您使用的是 NumPy,因此您可以使用 != 运算符和 np.flatnonzero 进行比较:
array1 = np.array([1,2,3])
array2 = np.array([1,2,4])
res = np.flatnonzero(array1 != array2)
print(res)
# array([2], dtype=int64)
【讨论】:
你可以使用 numpy 的 where 函数来做到这一点
array3 = np.where((array1-array2) != 0)
【讨论】:
要查找两个列表之间的 n 个变化元素的索引,我们可以使用
c = set(a) - set(b)
[a.index(i) for i in c]
【讨论】:
index 调用)。
list(set(a1)-set(a2)) 给出集合 a2 中不存在的所有元素的列表
a1 = [1,2,3]
a2 = [1,2,4]
arr=list(set(a1)-set(a2)) #arr=[3]
print(a1.index(arr[0])) #2
【讨论】: