NumPy - ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π»Ρ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. ΠΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ ΠΌΠ°ΡΡΠΈΡ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ.
SciPy - Π½Π°Π±ΠΎΡ ΡΠΈΡΠ»ΠΎΠ²ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ Π½Π°Π±ΠΎΡΠΎΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ Π΄ΠΎΠΌΠ΅Π½Π°, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ², ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Matplotlib - ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ².
pandas - ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈ ΠΏΡΠΎΡΡΡΠ΅ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ .
SymPy - Π΄Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΡ.
% matplotlib inline
import sympy as sympy
import numpy as np
import matplotlib.pyplot as plt
from scipy import *
ΠΠ°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π² numpy https://docs.scipy.org/doc/numpy/reference/routines.html
ΠΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ https://docs.scipy.org/doc/numpy/reference/routines.array-manipulation.html
N-dimensional array (ndarray) https://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html
# ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°
A = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
A
len(set(dir(A))- set(dir(object)))
#help(A)
# Π°ΡΡΠΈΠ±ΡΡΡ
A.ndim
A.shape
# A.shape=1,6
len(A)
A.size
# ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ (ΡΠΌ. lecture_2)
A[0,1]
https://docs.scipy.org/doc/numpy/reference/generated/numpy.matrix.html#numpy.matrix
ΠΠ±ΡΠ΅ΠΊΡ matrix ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ * (ΠΌΠ°ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅) ΠΈ **(ΠΌΠΎΡΠ½ΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΡΡ)
Π‘ΠΌ. ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ numpy.matrix vs 2D numpy.ndarray https://docs.scipy.org/doc/scipy/reference/tutorial/linalg.html#numpy-matrix-vs-2d-numpy-ndarray
B=np.matrix([[1, 2], [3, 4]])
type(B)
B
B.A
B.A1
# ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅) ΠΌΠ°ΡΡΠΈΡΡ ΠΈ ΡΠΊΠ°Π»ΡΡΠ° (ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅)
A+1
B+2
# ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅) ΠΌΠ°ΡΡΠΈΡ
A+B
A[0:2, 0:2]+B
# ΠΌΠ°ΡΡΠΈΡΡ
A.T
# Π²Π΅ΠΊΡΠΎΡΠ°
C=np.array([1,1,1])
C.T
C.reshape(3,1)
D=np.matrix([1,1])
D.T
A
# ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ
A*A
# ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΠ°Π»ΡΡ (ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠ΅)
A*3
# ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ A Π½Π° ΠΌΠ°ΡΡΠΈΡΡ C
# 1
A.dot(C)
# 2
np.dot(A, C)
# 3
A@C
D
B*D
# ΡΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠ° D
B*np.reshape(D, (2,1))
# ΡΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΠΊΡΠΎΡΠ° D
B*D.T
E=np.eye(2)
E
# matrix * array (Π½Π΅ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎ)
B*E
A[1]
B[1]
# ΡΠΈΠΊΠ» ΠΏΠΎ ΡΡΡΠΎΠΊΠ΅
for row in A:
print(row)
# ΡΡΠΎΠ»Π±Π΅Ρ
A[:,2]
B[:,1]
# cΡΠΌΠΌΠ° Π²ΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²; ΡΡΠΌΠΌΡ ΡΡΠΎΠ»Π±ΡΠΎΠ²; ΡΡΠΌΠΌΡ ΡΡΡΠΎΠΊ.
print(A.sum())
print(A.sum(0))
print(A.sum(1))
A
# ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²,
print(A.prod())
print(A.max(0))
print(A.min(1))
# ΡΠ»Π΅Π΄ ΠΌΠ°ΡΡΠΈΡΡ - ΡΡΠΌΠΌΠ° Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
trace(E)
https://docs.scipy.org/doc/scipy/reference/tutorial/linalg.html
scipy.linalg ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² numpy.linalg. ΠΏΠ»ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅, Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ΡΡ Π² numpy.linalg
from scipy import linalg
np.linalg.det(E)
B
B_inverse=np.linalg.inv(B)
B_inverse
# ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°
B_inverse.dot(B)
B.dot(B_inverse)
A=np.array([[0.0,1.0],[-1.0,0.0]])
A
v=np.array([2,2])
v
np.linalg.inv(A)@v
x=solve(A,v)
x
# ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°
A@x-v
https://docs.scipy.org/doc/scipy/reference/tutorial/linalg.html#eigenvalues-and-eigenvectors
ΠΠ°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² numpy.linalg https://docs.scipy.org/doc/numpy/reference/routines.linalg.html
A
vals=np.linalg.eigvals(A)
vals
vals,vectors=np.linalg.eig(A)
vals
vectors
from numpy.linalg import *
l,vec=eig(A)
l
vec
# ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ v_1 - Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ vec
vec[:,0]
# ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ v_2 - ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΠΌΠ°ΡΡΠΈΡΡ vec
vec[:,1]
# ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π»Ρ v_1
A.dot(vec[:,0])-l[0]*vec[:,0]
# ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π»Ρ v_2
A.dot(vec[:,1])-l[1]*vec[:,1]
# ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ (ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΏΠΎ Π³Π». Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ)
# Av=vD, D=diag(l_1, l_2)
D=diag(l)
D
# 1. ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°
A.dot(vec)-vec.dot(D)
# 2 ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°
inv(vec)@A@vec