为啥用 numpy 计算 2×2 矩阵的特征向量会使我的 Python 会话崩溃?

Posted

技术标签:

【中文标题】为啥用 numpy 计算 2×2 矩阵的特征向量会使我的 Python 会话崩溃?【英文标题】:Why calculations of eigenvectors of a 2 by 2 matrix with numpy crashes my Python session?为什么用 numpy 计算 2×2 矩阵的特征向量会使我的 Python 会话崩溃? 【发布时间】:2013-10-06 08:40:20 【问题描述】:

我尝试执行以下操作:

import numpy as np
from numpy import linalg as la
w, v = la.eig(np.array([[1, -1], [1, 1]]))

因此,python 会话崩溃并显示以下消息:

Illegal instruction (core dumped)

我尝试使用 scipy 而不是 numpy。结果是一样的。

【问题讨论】:

你应该检查你的 blas/lapack 安装。 “非法指令”表示您安装了支持 SSE/SSE3 的二进制文件,而您的 CPU 不支持这些功能。 【参考方案1】:

我怀疑你的 python/numpy/scipy 安装有问题,因为当我尝试它时我没有问题。

Python 2.7.4 (default, Sep 26 2013, 03:20:26) 
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> from numpy import linalg as la
>>> w, v = la.eig(np.array([[1, -1], [1, 1]]))
>>> w
array([ 1.+1.j,  1.-1.j])
>>> v
array([[ 0.70710678+0.j        ,  0.70710678+0.j        ],
       [ 0.00000000-0.70710678j,  0.00000000+0.70710678j]])
>>> 

我建议您尝试全新安装。

【讨论】:

以上是关于为啥用 numpy 计算 2×2 矩阵的特征向量会使我的 Python 会话崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

python与数据分析Numpy数值计算基础——补充

用 numpy 计算 k 个最大特征值和相应特征向量的最快方法

Numpy库进阶教程

科学计算基础软件包NumPy入门讲座:线性代数子模块

科学计算基础软件包NumPy入门讲座:线性代数子模块

用 Numpy 实现 PCA