寻找两个ndarray中不一样的元素

2021年6月23日 / 15次阅读 / Last Modified 2021年6月23日
NumPy

最近解决了一个big bug,在使用numpy上有一点经验总结,主要是寻找两个很大,shape一样的ndarray中,少量的不一样的元素的位置。

先说比较,如何有效比较两个很大的ndarray是否一样:

>>> import numpy as np
>>> a = np.full((720,1280),0)
>>> b = np.full((720,1280),0)
>>>
>>> np.sum(a!=b)
0
>>>
>>> a[0,0] = 1
>>> np.sum(a!=b)
1

使用np.sum函数,a!=b 这个判断的结果是一个全部包含True和False的ndarray,np.sum可以将True当成1,False当成0,进行sum计算。

当两个很大的ndarray中存在不一样的元素,现在的需求是,找到他们的位置:

>>> a[10,10] = 1
>>> a[11,11] = 1
>>> a[12,12] = 1
>>> c = np.nonzero(a-b)
>>> c
(array([ 0, 10, 11, 12]), array([ 0, 10, 11, 12]))
>>> for i,j in zip(c[0],c[1]):
...   print(i,j)
...
0 0
10 10
11 11
12 12

np.nonzero函数,能够返回a-b之后的ndarray中,不为0的元素的位置。

-- EOF --

本文链接:https://www.pynote.net/archives/3735

留言区

您的电子邮箱地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top