Python numpy where()函数只工作一次

Python numpy where()函数只工作一次,python,python-3.x,numpy,Python,Python 3.x,Numpy,当我尝试替换nan和inf时,只有第一个函数起作用。如果切换它们,nan将代替inf工作您不能用==np.nan进行检查,因为nan不等于nan,实际上: import numpy as np myList = [[1, 2, 3, 4],[3, 4, 5, 6], [5, 6, 7, 8]] arr = np.array(myList, dtype='float') arr[1,1] = np.nan arr[1,2] = np.inf arr = np.where(arr==np.inf,

当我尝试替换nan和inf时,只有第一个函数起作用。如果切换它们,nan将代替inf工作您不能用
==np.nan
进行检查,因为
nan
不等于
nan
,实际上:

import numpy as np
myList = [[1, 2, 3, 4],[3, 4, 5, 6], [5, 6, 7, 8]]
arr = np.array(myList, dtype='float')
arr[1,1] = np.nan
arr[1,2] = np.inf
arr = np.where(arr==np.inf, -1, arr)
arr = np.where(arr==np.nan, -1, arr)
print(arr)
您可以使用以下选项:

>>> np.nan == np.nan
False
arr=np.where(np.isnan(arr),-1,arr)

你可以看看这个:

'NaN具有自身不相等的属性,您应该使用np.isnan来测试NaN值'

arr = np.where(np.isnan(arr), -1, arr)
可能重复的
import numpy as np
myList = [[1, 2, 3, 4],[3, 4, 5, 6], [5, 6, 7, 8]]
arr = np.array(myList, dtype='float')
arr[1,1] = np.nan
arr[1,2] = np.inf
arr = np.where(arr==np.inf, -1, arr)
arr = np.where(np.isnan(arr), -1, arr)
print(arr)