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

Posted

技术标签:

【中文标题】Python Numpy TypeError:输入类型不支持ufunc\'isfinite\'【英文标题】:Python Numpy TypeError: ufunc 'isfinite' not supported for the input typesPython Numpy TypeError:输入类型不支持ufunc'isfinite' 【发布时间】:2017-04-10 02:54:33 【问题描述】:

这是我的代码:

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 og covMat 是什么? 如图所示,显示“对象”(36行36列)。 啊,那是dtype。那么这很可能是你的问题。尝试使用np.array(covMat, dtype=float)。这种转换会给您带来错误吗? 做到了 - 谢谢!如果您提交解决方案,我会检查您的答案是否正确。 【参考方案1】:

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

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

转换dtype

【讨论】:

这对我也有帮助。我正在使用 shap 并且收到此类型转换错误。我检查了我的一个属性是对象更改为浮动并且它有效。感谢您的解决方案

以上是关于Python Numpy TypeError:输入类型不支持ufunc'isfinite'的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 TypeError:'numpy.ndarray' 对象在 Python 上不可调用

Python - 重复数据删除问题:TypeError:不可散列的类型:'numpy.ndarray'

Python:两个数据帧的外部连接或合并给出错误:TypeError:unhashable type:'numpy.ndarray'

Python 酸洗错误:TypeError:对象泡菜未返回列表。 numpy的问题?

Python - 尝试使用 PIL 的 Image.fromarray 保存 numpy 数组时出现 TypeError

带有 SWIG 的 C++ 数组到 Numpy 的 TypeError 问题