会社の記事で書きました(ㆁᴗㆁ✿)
もくじ
環境
- CentOS7
- GUIデスクトップインストール
Python3のインストール
Python3.4はyumで入るので、3.4を入れてみます。
もともとyum自体がPythonで動いていたりとCentOS7にPythonは元から入っています。
# yum install epel-release
# yum install python34 python34-libs python34-devel python34-pip
Linuxライブラリのインストール
Pythonライブラリをインストールする際に必要なモジュールを入れます。
# yum install git gcc bzip2 bzip2-devel openssl openssl-devel readline readline-devel sqlite-devel cmake libjpeg-devel libtiff-devel libpng-devel jasper-devel mesa-libGL-devel libXt-devel libgphoto2-devel nasm libtheora-devel autoconf automake gcc-c++ libtool yasm openal-devel blas blas-devel atlas atlas-devel lapack lapack-devel
バージョンの確認
コマンドラインやパスを利用してバージョン間で共存できます。
# python --version Python 2.7.5
# python3 --version Python 3.4.5
# pip3 --version pip 8.1.2 from /usr/lib/python3.4/site-packages (python 3.4)
パスの確認
# ls -l /bin/py* -rwxr-xr-x. 1 root root 78 11月 6 09:29 /bin/pydoc lrwxrwxrwx 1 root root 8 4月 13 10:47 /bin/pydoc3 -> pydoc3.4 -rwxr-xr-x 1 root root 78 11月 10 01:26 /bin/pydoc3.4 -rwxr-xr-x 1 root root 221 4月 13 10:54 /bin/pygmentize -rwxr-xr-x. 1 root root 188 6月 10 2014 /bin/pygtk-demo -rwxr-xr-x. 1 root root 42 12月 29 2013 /bin/pyinotify lrwxrwxrwx. 1 root root 7 4月 13 2017 /bin/python -> python2 lrwxrwxrwx 1 root root 14 4月 13 10:51 /bin/python-config -> python2-config lrwxrwxrwx. 1 root root 9 4月 13 2017 /bin/python2 -> python2.7 lrwxrwxrwx 1 root root 16 4月 13 10:51 /bin/python2-config -> python2.7-config -rwxr-xr-x. 1 root root 7136 11月 6 09:29 /bin/python2.7 -rwxr-xr-x 1 root root 1835 11月 6 09:29 /bin/python2.7-config lrwxrwxrwx 1 root root 9 4月 13 10:47 /bin/python3 -> python3.4 lrwxrwxrwx 1 root root 16 4月 13 10:47 /bin/python3-config -> python3.4-config -rwxr-xr-x 2 root root 11312 11月 10 01:27 /bin/python3.4 lrwxrwxrwx 1 root root 17 4月 13 10:47 /bin/python3.4-config -> python3.4m-config -rwxr-xr-x 2 root root 11312 11月 10 01:27 /bin/python3.4m -rwxr-xr-x 1 root root 173 11月 10 01:27 /bin/python3.4m-config -rwxr-xr-x 1 root root 3366 11月 10 01:24 /bin/python3.4m-x86_64-config lrwxrwxrwx 1 root root 10 4月 13 10:47 /bin/pyvenv -> pyvenv-3.4 -rwxr-xr-x 1 root root 230 11月 10 01:26 /bin/pyvenv-3.4
環境を整えます
NumPyのインストール
# yum install gcc-gfortran blas-devel lapack-devel numpy
scipyのインストール
# yum install gcc-c++ scipy
pandasのインストール
# pip3 install pandas
matplotlibのインストール
# yum install freetype-devel libpng-deve
# pip3 install matplotlib
scikit-learnのインストール
# pip3 install scikit-learn
IPython notebookのインストール
# pip3 install ipython
# pip3 install ipython[noteboook]
noseのインストール
# yum install -y python-setuptools
# easy_install nose
NumPyでlog計算してみる
環境を作ったところで、せっかくなのでNumPyを使ってみましょう。
import numpy としてNumPyモジュールを読み込めます。引数に asとすることでエイリアスを指定することも可能です。
# vi logarithm.py # coding: utf-8 import numpy as np import math def main(): #常用対数 cval = np.log10(100) #log_10(100) print(cval) #2 print(pow(10, 2)) # 100 確かめ算 #配列 ar = np.array([1, 2, 3, 4]) arval = np.log(ar) print(arval) #自然対数での計算 print(np.e) # 2.718281828459045 ネイピアの定数 nval = np.log(100) #log_e(100) print(nval) # 4.60517018599 print(pow(2.71828182845, 4.60517018599)) # 99.9999999987 確かめ算 #mathライブラリを使う mval = math.log(8, 2) #log_2(8) print(mval) #3.0 if __name__ == '__main__': main()
log10, log2はオブジェクトとして登録されていて、()の前に底として指定すると使えます。mathライブラリを使えば底を自由に指定出来ます。//log_10()だけでも困りはしないです。
出力してみよう
# python3 logarithm.py
2.0
100
[ 0. 0.69314718 1.09861229 1.38629436]
2.718281828459045
4.60517018599
99.99999999865841
3.0
いい感じですね。
NumPyの魅力は多次元配列
# coding: utf-8 import numpy as np import math def main(): #多次元配列 tensorEven = np.array([[2, 6, 8], [8, 12, 14], [16, 32, 48]]) tensorPrime = np.array([[2, 3, 5], [7, 11, 13], [17, 19, 23]]) tval1 = tensorEven * tensorPrime print(tval1) tensorEven = np.array([[2, 6, 8], [8, 12, 14], [16, 32, 48]]) tensorOdd = np.array([[5, 7, 9], [11, 13, 15], [17, 19, 21]]) tval2 = tensorEven + tensorOdd print(tval2) tensorEven = np.array([[2, 6, 8], [8, 12, 14], [16, 32, 48]]) tensorPrime = np.array([[2, 3, 5], [7, 11, 13], [17, 19, 23]]) tensorOdd = np.array([[5, 7, 9], [11, 13, 15], [17, 19, 21]]) tval3 = tensorEven * tensorPrime / tensorOdd print(tval3) #配列内の要素数取得 print("#配列の要素数 縦, 横") print(np.shape(tval3)) #(3, 3) if __name__ == '__main__': main()
出力してみよう
[[ 4 18 40]
[ 56 132 182]
[ 272 608 1104]]
[[ 7 13 17]
[19 25 29]
[33 51 69]]
[[ 0.8 2.57142857 4.44444444]
[ 5.09090909 10.15384615 12.13333333]
[ 16. 32. 52.57142857]]
#配列の要素数 縦, 横
(3, 3)こんな風に計算できます。
今度はライブラリを使って関数のグラフを作ったりして遊んでみましょ~。
お疲れ様です。
# coding: utf-8 import numpy as np import math def main(): # logarithm #常用対数 cval = np.log10(100) #log_10(100) print(cval) #2 print(pow(10, 2)) # 100 確かめ算 print("------------------------------------------") #配列 ar = np.array([1, 2, 3, 4]) arval = np.log(ar) print(arval) #print("------------------------------------------") #自然対数での計算 print(np.e) # 2.718281828459045 ネイピアの定数 nval = np.log(100) #log_e(100) print(nval) # 4.60517018599 print(pow(2.71828182845, 4.60517018599)) # 99.9999999987 確かめ算 print("------------------------------------------") #mathライブラリを使う mval = math.log(8, 2) #log_2(8) print(mval) #3.0 print("------------------------------------------") # logarithm ここまで # 多次元配列 #================================================================ tensorEven = np.array([[2, 6, 8], [8, 12, 14], [16, 32, 48]]) tensorOdd = np.array([[5, 7, 9], [11, 13, 15], [17, 19, 21]]) tensorPrime = np.array([[2, 3, 5], [7, 11, 13], [17, 19, 23]]) #================================================================ tval1 = tensorEven * tensorPrime print(tval1) print("------------------------------------------") tval2 = tensorEven + tensorOdd print(tval2) print("------------------------------------------") tval3 = tensorEven * tensorPrime / tensorOdd print(tval3) print("------------------------------------------") #配列内の要素数取得 print("#配列の要素数 縦, 横") print(np.shape(tval3)) #(3, 3) # 多次元配列 ここまで if __name__ == '__main__': main()
2.0 100 ------------------------------------------ [ 0. 0.69314718 1.09861229 1.38629436] 2.718281828459045 4.60517018599 99.99999999865841 ------------------------------------------ 3.0 ------------------------------------------ [[ 4 18 40] [ 56 132 182] [ 272 608 1104]] ------------------------------------------ [[ 7 13 17] [19 25 29] [33 51 69]] ------------------------------------------ [[ 0.8 2.57142857 4.44444444] [ 5.09090909 10.15384615 12.13333333] [ 16. 32. 52.57142857]] ------------------------------------------ #配列の要素数 縦, 横 (3, 3)