Hier soir, j'ai résumé [Introduction to Data Scientists] Bases de Numpy comme base de l'utilisation de la bibliothèque de calcul scientifique, de traitement de données et de dessin de graphiques, mais ce soir Je vais résumer les bases de Scipy. Cependant, comme Scipy est énorme parce qu'il est difficile à comprendre même s'il est copié en silence, je vais compléter l'explication dans ce livre. 【Mise en garde】 ["Cours de formation de scientifique des données à l'Université de Tokyo"](https://www.amazon.co.jp/%E6%9D%B1%E4%BA%AC%E5%A4%A7%E5%AD%A6%E3 % 81% AE% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 82% B5% E3% 82% A4% E3% 82% A8% E3% 83% B3% E3% 83 % 86% E3% 82% A3% E3% 82% B9% E3% 83% 88% E8% 82% B2% E6% 88% 90% E8% AC% 9B% E5% BA% A7-Python% E3% 81 % A7% E6% 89% 8B% E3% 82% 92% E5% 8B% 95% E3% 81% 8B% E3% 81% 97% E3% 81% A6% E5% AD% A6% E3% 81% B6 % E3% 83% 87% E2% 80% 95% E3% 82% BF% E5% 88% 86% E6% 9E% 90-% E5% A1% 9A% E6% 9C% AC% E9% 82% A6% Je vais lire E5% B0% 8A / dp / 4839965250 / ref = tmm_pap_swatch_0? _ Encoding = UTF8 & qid = & sr =) et résumer les parties que j'ai des doutes ou que je trouve utiles. Par conséquent, je pense que le synopsis sera simple, mais veuillez le lire en pensant que le contenu n'a rien à voir avec ce livre.
Scipy est une bibliothèque de calculs scientifiques et technologiques, et peut effectuer divers processus mathématiques (calcul d'algèbre linéaire, transformation de Fourier, etc.). Ici, trouvons la matrice inverse de l'algèbre linéaire, des valeurs propres, des solutions d'équations, etc.
>>> import scipy as sp
>>> import scipy.linalg as linalg
>>> from scipy.optimize import minimize_scalar
>>> matrix = np.array([[1,-1,-1],[-1,1,-1],[-1,-1,1]])
>>> matrix
array([[ 1, -1, -1],
[-1, 1, -1],
[-1, -1, 1]])
>>> print('Formule matricielle', linalg.det(matrix))
Formule matricielle-4.0
>>> print('Matrice inverse','\n', linalg.inv(matrix))
Matrice inverse
[[ 0. -0.5 -0.5]
[-0.5 -0. -0.5]
[-0.5 -0.5 0. ]]
>>> print('Produit matriciel','\n',matrix.dot(linalg.inv(matrix)))
Produit matriciel
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
>>> matrix*linalg.inv(matrix) #Produit d'élément de numpy
array([[ 0. , 0.5, 0.5],
[ 0.5, -0. , 0.5],
[ 0.5, 0.5, 0. ]])
>>> [email protected](matrix) #Produit de numpy
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> eig_value, eig_vector = linalg.eig(matrix)
>>> print('valeur propre','\n',eig_value)
valeur propre
[-1.+0.j 2.+0.j 2.+0.j]
>>> print('Vecteur unique','\n',eig_vector)
Vecteur unique
[[ 0.57735027 -0.81649658 0.42755853]
[ 0.57735027 0.40824829 -0.81618716]
[ 0.57735027 0.40824829 0.38862863]]
>>> eig_value, eig_vector = np.linalg.eig(matrix) #Idem pour numpy
>>> print('Vecteur unique','\n',eig_vector)
Vecteur unique
[[ 0.57735027 -0.81649658 0.42755853]
[ 0.57735027 0.40824829 -0.81618716]
[ 0.57735027 0.40824829 0.38862863]]
>>> print('valeur propre','\n',eig_value) #valeur propreは実数表記
valeur propre
[-1. 2. 2.]
À propos de scipy.linalg vs numpy.linalg 【référence】 Linear Algebra (scipy.linalg) "Scipy.linalg contient toutes les fonctions de numpy.linalg. De plus, il contient d'autres éléments plus avancés non inclus dans numpy.linalg." "Un autre avantage de l'utilisation de scipy.linalg par rapport à numpy.linalg est qu'il est toujours compilé avec la prise en charge BLAS / LAPACK, alors qu'il est facultatif pour numpy. Par conséquent, selon la façon dont numpy est installé, La version de scipy est peut-être plus rapide. " "Par conséquent, utilisez scipy.linalg au lieu de numpy.linalg à moins que vous ne souhaitiez pas ajouter scipy en tant que dépendance du programme numpy."
Exemple de calcul d'optimisation
>>> def my_function(x):
... return (x**2 + 2*x + 1)
...
>>> from scipy.optimize import newton
>>> newton(my_function,0)
-0.9999999852953906
Utilisez la méthode Brent Et trouvez la valeur minimale de ma_fonction ().
>>> minimize_scalar(my_function, method = 'Brent')
fun: 0.0
nfev: 9
nit: 4
success: True
x: -1.0000000000000002
>>> def my_function2(x):
... return (x**3 + 2*x + 1)
...
>>> newton(my_function2,0)
-0.45339765151640365
SciPy Tutorial Pendant un moment, je ne peux qu'écrire comment utiliser l'entrée, donc j'aimerais la copier bientôt. SciPy Tutorial Introduction Basic functions Special functions (scipy.special) Integration (scipy.integrate) Optimization (scipy.optimize) Interpolation (scipy.interpolate) Fourier Transforms (scipy.fft) Signal Processing (scipy.signal) Linear Algebra (scipy.linalg) Sparse eigenvalue problems with ARPACK Compressed Sparse Graph Routines (scipy.sparse.csgraph) Spatial data structures and algorithms (scipy.spatial) Statistics (scipy.stats) Multidimensional image processing (scipy.ndimage) File IO (scipy.io)
・ Résumé des bases de Scipy dans ce livre ・ Scipy souffre souvent de numpy, mais Scipy de base semble être plus rapide.
・ Le didacticiel SciPy a beaucoup de volume, mais il existe de nombreux exemples intéressants, je voudrais donc le résumer.
Recommended Posts