Lui*_*uis 1 python arrays compare numpy python-3.x
我需要比较一些numpy数组,它们应该以相同的顺序具有相同的元素,除了第二个中的一些NaN值.
我需要一个或多或少像这样的功能:
def func( array1, array2 ):
if ???:
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
例:
x = np.array( [ 1, 2, 3, 4, 5 ] )
y = np.array( [ 11, 2, 3, 4, 5 ] )
z = np.array( [ 1, 2, np.nan, 4, 5] )
func( x, z ) # returns True
func( y, z ) # returns False
Run Code Online (Sandbox Code Playgroud)
数组的长度始终相同,NaN值始终位于第三个(x和y始终只有数字).我可以想象已经有一个功能或东西,但我只是找不到它.
有任何想法吗?
您可以使用蒙面数组,它具有您在结合时要求的行为np.all:
zm = np.ma.masked_where(np.isnan(z), z)
np.all(x == zm) # returns True
np.all(y == zm) # returns False
Run Code Online (Sandbox Code Playgroud)
或者您可以明确地写出您的逻辑,注意numpy必须使用|而不是or,并且运算符优先级的差异导致:
def func(a, b):
return np.all((a == b) | np.isnan(a) | np.isnan(b))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |