Python

Python NumPy環境構築 log 多次元配列

Python3 NumPy インストール log 多次元配列

会社の記事で書きました(ㆁᴗㆁ✿)

 

 

環境

  • 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)

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)