Python Numpy TypeError:ufunc';isfinite';不支持输入类型

Python Numpy TypeError:ufunc';isfinite';不支持输入类型,python,arrays,pandas,numpy,eigenvalue,Python,Arrays,Pandas,Numpy,Eigenvalue,这是我的密码: def topK(dataMat,sensitivity): meanVals = np.mean(dataMat, axis=0) meanRemoved = dataMat - meanVals covMat = np.cov(meanRemoved, rowvar=0) eigVals,eigVects = np.linalg.eig(np.mat(covMat)) 我在上面最后一行的标题中发现了错误。我怀疑与数据类型有关,因此,下面是Sp

这是我的密码:

def topK(dataMat,sensitivity):
    meanVals = np.mean(dataMat, axis=0)
    meanRemoved = dataMat - meanVals
    covMat = np.cov(meanRemoved, rowvar=0)
    eigVals,eigVects = np.linalg.eig(np.mat(covMat))
我在上面最后一行的标题中发现了错误。我怀疑与数据类型有关,因此,下面是Spyder中变量资源管理器中变量和数据类型的图像:


我已经尝试将np.linalg.eig(np.mat(covMat))更改为np.linalg.eig(np.array(np.mat(covMat)))np.linalg.eig(np.array(covMat)),但没有任何效果。有什么想法吗?(一个很好的例子!)

您的数组有一个
dtype
object
,但这应该是一些浮点
dtype
。使用例如

covMat = np.array(covMat, dtype=float)

要转换
dtype

什么是
dtype
og
covMat
?如图所示,它显示“object”(36行36列)。啊,这就是
dtype
。那很可能是你的问题。尝试使用
np.array(covMat,dtype=float)
。那个转换会给你一个错误吗?是的,谢谢!如果你提交一个解决方案,我会检查你的答案是否正确。这对我也有帮助。我在使用shap时遇到了这个类型转换错误。我已经检查了我的一个属性是否被对象更改为float,并且它工作了。谢谢你的解决方案