◀ Previous | TOC | Next ▶ |
ドキュメントホルダー内に新しいフォルダーを作る
そのフォルダーにこのファイルを保存.
そのフォルダーに移動
フォルダー内でコマンドプロンプトを起動
コマンドプロンプトで ‘jupyter notebook’ と入力
Home Page 内でこのファイルをクリックして開く.
ファイルを別名で保存.
Anaconda navigator を使う方法. https://anaconda.org/anaconda/anaconda-navigator
Jupyter notebook は, ファイルの取扱に若干のクセがある.
自動保存
remame
save as
make a copy
これは慣れるしかない.
コマンドモードとエディットモード
Esc でコマンドモードへ
Enter でエディットモードへ
セルの実行: コマンドモードでもエディットモードでも有効
Ctrl+Enter, そのセルを実行
Shift+Enter, そのセルを実行して下のセルに移る.
Alt+Enter, そのセルを実行してその下に新たなセルを作る.
セルの削除
コマンドモードで ‘dd’ つまり ’d’を 2 回打つ.
[1]:
import numpy as np
np.log(10)
[1]:
2.302585092994046
[2]:
# 上のセルを実行したあとは, import numpy as np は必要ない.
np.log10(10)
[2]:
1.0
np.log: 自然対数
np.log10: 常用対数
表示 print
[3]:
print(np.log(10))
2.302585092994046
定数
[4]:
print(np.pi)
print(np.e)
print(np.euler_gamma)
print(np.nan)
a = np.pi
3.141592653589793
2.718281828459045
0.5772156649015329
nan
定数は同じセッション内では記憶されている.
[5]:
print(a)
3.141592653589793
次を計算せよ.
\(5\pi\)
\(\sin \frac{1}{2} \pi\)
\(\sinh \frac{1}{2}\)
\(\arcsin (\frac{1}{2}) / \pi\)
[6]:
print(5 * np.pi)
print(np.sin(.5 * np.pi))
print(np.sinh(.5))
print(np.arcsin(.5) / np.pi)
15.707963267948966
1.0
0.5210953054937474
0.16666666666666669
[8]:
lst = ['a', 'b', 2 , 'd']
for l in lst:
print(l)
a
b
2
d
[9]:
lst = [1, 2, 3, 4]
for l in lst:
print(np.exp(l))
2.718281828459045
7.38905609893065
20.085536923187668
54.598150033144236
[10]:
for i in range(4): # 0 から 3 まで
print(i, np.exp(i))
0 1.0
1 2.718281828459045
2 7.38905609893065
3 20.085536923187668
[14]:
v = np.array([1, 2, 3, 4])
for t in v:
print(t, np.exp(t))
print(type(v))
print(type(lst))
1 2.718281828459045
2 7.38905609893065
3 20.085536923187668
4 54.598150033144236
<class 'numpy.ndarray'>
<class 'list'>
\(\texttt{numpy.array}\) を使う
[11]:
a = np.array([[1, 2], [3, 4]])
print(a)
[[1 2]
[3 4]]
行列の掛け算は, \(\texttt{np.matmul}\) を使う, 単なる \(*\) は項別の積をとったもの.
[12]:
b = np.array([[2, 3], [5, 6]])
print(b)
print(np.matmul(a, b))
print(a * b)
[[2 3]
[5 6]]
[[12 15]
[26 33]]
[[ 2 6]
[15 24]]
行列に関する計算例
[13]:
ainv = np.linalg.inv(a) # a の逆行列
print(ainv)
print(np.matmul(a, ainv)) # a と逆行列の積
print(np.linalg.det(a)) # 行列式
[[-2. 1. ]
[ 1.5 -0.5]]
[[1.00000000e+00 1.11022302e-16]
[0.00000000e+00 1.00000000e+00]]
-2.0000000000000004
[14]:
ls = [.1, .2, .3, .4, .5]
sinlpis = []
for l in ls:
sinlpis.append(np.sin(l * np.pi ))
print(sinlpis)
rs = np.array(ls)
sinrpis = np.sin(rs * np.pi)
print(sinrpis)
[0.3090169943749474, 0.5877852522924731, 0.8090169943749475, 0.9510565162951535, 1.0]
[0.30901699 0.58778525 0.80901699 0.95105652 1. ]
[15]:
# 最初から Numpy 配列として作成する.
ps = np.array([.1, .2, .3, .4, .5])
sinppis = np.sin(ps * np.pi)
print(sinppis)
[0.30901699 0.58778525 0.80901699 0.95105652 1. ]
[16]:
lst2 = [[1, 2], [3, 4]]
#print(lst2)
#print(type(lst2))
a = np.array([[1, 2], [3, 4]])
#print(a)
#print(type(a))
#print(np.matmul(a, a))
[1]:
import numpy as np
aa = np.array([[1, 1], [-1, 1]])
print(np.linalg.eig(aa))
#print('見やすくしよう.')
print(np.linalg.eig(aa)[0]) # [0] で固有値のベクトルが
print(np.linalg.eig(aa)[1]) # [0] で列固有ベクトルを並べた行列が表示される.
print('固有ベクトルはこの行列の各列である. 行ではない.')
(array([1.+1.j, 1.-1.j]), array([[0.70710678+0.j , 0.70710678-0.j ],
[0. +0.70710678j, 0. -0.70710678j]]))
[1.+1.j 1.-1.j]
[[0.70710678+0.j 0.70710678-0.j ]
[0. +0.70710678j 0. -0.70710678j]]
固有ベクトルはこの行列の各列である. 行ではない.
[18]:
import scipy.linalg
ts = np.linspace(0, 5, 6)
x0 = [1, 1]
#print(ts)
#print(x0)
#
# これ以下の部分, 配列としての計算もできると思うけど, 未確認.
#
taas = []
xs = []
for t in ts:
exptaa = scipy.linalg.expm(t * aa)
taas.append(exptaa)
xs.append(np.matmul(exptaa, x0))
xs = np.array(xs)
#print(xs)
[19]:
import matplotlib.pyplot as plt
%matplotlib inline
#fig, ax = plt.subplots(figsize=(4, 4))
#ax.plot(xs[:, 0], xs[:, 1])
次の行列の行列式を \(\texttt{numpy}\) を用いて求めよ.
\(A\), \(B\) が次のように与えられるとき, \(\det (AB)\), \(\det(BA)\), \(\det (B^\mathrm T A^\mathrm T)\) を \(\texttt{numpy}\) を用いて求めよ.
リストあるいは, \(\texttt{numpy.(nd)array}\) を用いて, 自然対数 \(\log x_i\), \(x_i =i\), \(i = 1, 2, 3, 4\) を計算せよ
◀ Previous | TOC | Next ▶ |