SJE2015 ex02 †[edit]課題A †[edit]はじめての Python + NumPy 課題A-1 †[edit]NumPy とは何か,ウェブで検索するなどして調べなさい. 課題A-2 †[edit]次のプログラムを実行して,何が起こっているか考えなさい.わかったことを高橋に説明しなさい. import numpy as np A = np.array( [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] ) print A print A.shape, A.dtype print B = np.array( [ [ 1, 2, np.pi ], [ 4, 5, 6 ] ] ) print B print B.shape, B.dtype print A[0,1] = np.exp(1) B[0,1] = np.exp(1) print A print B print C = A + B print C, C.shape, C.dtype print vec = np.arange( 1, 21 ) print vec, vec.shape, vec.dtype print mat = np.reshape( vec, ( 4, 5 ) ) print mat, mat.shape print print mat.T, mat.T.shape print mat[1, 1] *= 111 print mat print vec print X = mat[:2,2:4] print X print Y = X - 2 print Y Z = X * Y print Z Z = np.dot( X, Y ) print Z 課題A-3 †[edit]np.ones, np.zeros について調べなさい.また,ipython で In [1]: help(np.ones) としてヘルプを出し(終了は less と同じでアルファベットのq),それを読んで,「整数の」1がならんだ2行3列の行列を作る方法を考えなさい. 課題B †[edit]NumPy と自分の頭を対決させてみよう. Vision/2015/report1?の問2をやりなさい.1.は手計算で,2.は NumPy で. 固有値固有ベクトルの計算は,np.linalg.eig を使えばよい. 使い方などは調べてみよう. 課題C †[edit]行列の積の計算でC言語と対決させてみよう. C言語のプログラム †[edit]こちらから入手しましょう https://gist.github.com/takatakamanbou/2713ba9a783d95d248f7 コンパイルの仕方 $ cc matrix.c -o matrix または $ cc -O3 matrix.c -o matrix 後者の最初のオプションはアルファベット大文字のオー.これは最適化オプションというもので,つけるとよりCPUを効率よく使う機械語プログラムを生成するようになります. 実行の仕方 $ time ./matrix 1000 行列の大きさを適当にかえて実行し,結果をテキストファイルに記録しておこう. 後日グラフを描いてみるのに使います. Python + NumPy のプログラム †[edit]こちらから入手しましょう https://gist.github.com/takatakamanbou/14391b6e42632215c7da 実行の仕方 $ time python matrix.py 1000 または ipython 上で In [1]: %time %run matrix.py 1000 C言語の場合と同様に,いろいろ実験して結果をテキストファイルに残しておこう. |