美文网首页
2020-02-02 学习ubuntu和python(1)

2020-02-02 学习ubuntu和python(1)

作者: 黄倜 | 来源:发表于2020-02-02 15:20 被阅读0次

不做程序员很久很久了,但还是对python充满了兴趣,随手记录一些学习的过程和代码,以后用的时候可以参考。

我是在windows10上用 multipass 安装ubuntu18.04的,很方便,直接一个multipass launch命令就可以启动一个最新版本的ubuntu,对于我这种特别容易把系统和环境搞乱的人特别有效。multipass参考网址 https://multipass.run/

打算启动一个名叫stupy的ubuntu实例。使用如下命令启动并连接实例之后,尝试python和python3命令,发现python3已经安装。

multipass launch -n stupy
multipass shell stupy

我是打算玩一玩python的数据计算和机器学习方面的功能,于是尝试安装numpy等包,但没有pip,于是使用如下命令安装pip3(基于python3的pip)。

sudo apt update
sudo apt install python3-pip

安装一些相关依赖包:

pip3 install numpy pandas scipy matplotlib

这些包之间的关系可以参考这篇文章 https://www.quora.com/What-is-the-relationship-among-NumPy-SciPy-Pandas-and-Scikit-learn-and-when-should-I-use-each-one-of-them

另外使用 python3 -V 查询到当前python版本是3.6.9,不是3.8.1最新版,但网上查询更新python比较复杂,两个版本使用不一样的文件路径,还要用重定向什么的。我估计我使用不到那么新的功能,就保留3.6.9这个版本先用着吧。

然后就启动python3并做一些测试吧!这次先不保存文件,直接使用几行代码做一些测试:

>>> from numpy import *
>>> randMat = mat(random.rand(4, 4))
>>> randMat
matrix([[0.55689236, 0.7743607 , 0.74879372, 0.35693523],
        [0.43856915, 0.55167566, 0.44636307, 0.61456016],
        [0.03713953, 0.55513451, 0.70315538, 0.96554297],
        [0.26218718, 0.15071786, 0.69539776, 0.83468039]])
>>> invRandMat = randMat.I
>>> invRandMat
matrix([[-0.16855087,  2.09300269, -2.10810994,  0.96966025],
        [ 0.3634699 ,  0.64481515,  1.20223764, -2.02092325],
        [ 1.80970312, -3.07622829,  0.18641386,  1.27544623],
        [-1.52040594,  1.78901845,  0.28979828,  0.19578066]])
>>> myEye = randMat * invRandMat
>>> myEye
matrix([[ 1.00000000e+00, -4.66209524e-17,  1.00459848e-16,
         -2.73459291e-17],
        [ 4.18376691e-17,  1.00000000e+00, -5.25449109e-17,
         -1.47357873e-16],
        [-5.94180019e-17, -3.69257080e-16,  1.00000000e+00,
          3.42718360e-16],
        [ 1.67147495e-16,  2.16262745e-16, -9.21661096e-17,
          1.00000000e+00]])

简单解释一下,rand命令用来生成随机数或数组,mat用来形成一个矩阵,.I命令用来求矩阵的逆矩阵,两者相乘的结果为对角线元素为1、其他元素为0的单位矩阵,eye命令生成一个标准的单位矩阵,两者相减所有元素应该都为0,但实际运行结果有一些极小误差,比如这样子:

>>> myEye - eye(4)
matrix([[ 2.22044605e-16, -4.66209524e-17,  1.00459848e-16,
         -2.73459291e-17],
        [ 4.18376691e-17, -1.11022302e-16, -5.25449109e-17,
         -1.47357873e-16],
        [-5.94180019e-17, -3.69257080e-16,  0.00000000e+00,
          3.42718360e-16],
        [ 1.67147495e-16,  2.16262745e-16, -9.21661096e-17,
          0.00000000e+00]])

做一个实际数学应用吧,比如利用矩阵求解二元一次方程组。比如:2x-7y=8和3x-8y=10 很容易用小学知识代入法得x=1.2 y=-0.8

而使用矩阵的二阶行列式方法,首先把方程组写成:2 * x0 + (-7) * x1 = 8 和 3 * x0 + (-8) * x1 = 10 然后使用代码:

>>> a = array([[2, -7], [3, -8]])
>>> b = array([8, 10])
>>> x = linalg.solve(a, b)
>>> x
array([ 1.2, -0.8])

然后验证答案是否正确:

>>> allclose(dot(a, x), b)
True

另外受到 https://www.jianshu.com/p/67abc32382d9 启发安装IPythonJupyter Notebook来加强python的数据处理交互和展现能力:

pip3 install IPython
pip3 install notebook

然后运行 jupyter notebook 就会启动 http://localhost:8888 来验证是否安装成功。这里因为是纯命令行的ubuntu,因此需要回到外部系统打开浏览器来测试。

相关文章

网友评论

      本文标题:2020-02-02 学习ubuntu和python(1)

      本文链接:https://www.haomeiwen.com/subject/jvkqxhtx.html