python - 在 Numpy 中计算特征值不起作用 : Each element is a float

标签 python python-2.7 numpy linear-algebra

尝试计算牛顿法优化矩阵的特征值。

在 PyDev for Eclipse 中使用 Python 2.7.6。

这是从 PyDev 返回的变量(Hessian):

ndarray: [[ 0.01  0.  ]
[ 0.    1.  ]]

以下命令:

np.linalg.eig(Hessian)

返回异常:

ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

我什至尝试通过循环每个元素并使用 float 函数将每个元素转换为浮点值。

编辑/更多信息:插入 print repr(Hessian) 后,它产生了以下结果。

array([[0.01, 0.0],
   [0.0, 1.0]], dtype=object)

最佳答案

根据您的评论,矩阵似乎不是 numpy 数组,导致使用 numpy 时出现错误。

正如您所指出的:

“也许正是这个 Hessian[i,j]=diff(diff(function,x_i),x_j) 的过程导致了麻烦。”

我也无法重现您的错误。

[[0.01, 0.], [0., 1.]]这样的简单尺度变换矩阵的特征向量显然是标准基向量[1,0][0,1]经检查,特征值分别为0.01和1。

相关的numpy模块执行此操作没有问题,因此错误一定在其他地方。

>>> import numpy as np
>>> M = np.array([[0.01,0.],[0.,1.]])
>>> M
array([[ 0.01,  0.  ],
       [ 0.  ,  1.  ]])
>>> np.linalg.eig(M)
(array([ 0.01,  1.  ]), array([[ 1.,  0.],
       [ 0.,  1.]]))

关于python - 在 Numpy 中计算特征值不起作用 : Each element is a float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924281/

相关文章:

python - 写入数据库时​​,Python 3 中的 SQLite3 出现磁盘 I/O 错误

python - 来自 2500 个链接的网页抓取 - 行动方案?

python - 变换/扭曲坐标

python - 将字符串中的每个字符替换为字典中的 float ,并将所有替换值相加

python - 从第三个数组中的两个数组中有效地获取每对元素的最小值

python - 为极坐标创建网格

python - 无法运行 Popen.communicate() 两次。 (Python 子进程模块)

python - 我需要创建一个函数来传递多个列表并返回一个字符串然后进行打印

python - 在 python 中——如何将项目转换为字典?

google-app-engine - Twilio TwiML XML 字符串而不是 url