Mémo privé.
Jupyter
jupyter_contrib_nbextensions
est inclus pour la sortie pdf, qui sera décrite plus tard, et pour la complétion dans Jupyter, et n'est pas essentiel.
pip install jupyter jupyter_contrib_nbextensions
pip install matplotlib numpy #Ajouter d'autres éléments nécessaires
Je pensais que ce serait mieux dans VSCode que dans le navigateur, mais je n'ai pas changé après tout.
jupyter notebook --ip=127.0.0.1 --allow-root
Vous pouvez mettre dans le module jupyterthemes
, ou vous pouvez jouer avec ~ / .jupyter / custom / custom.css
vous-même.
Dans le cas précédent
J'utilise https://gist.github.com/7ma7X/54f5e0b60e39ae8826bfcc580d524e40 comme custom.css.
jupyter nbconvert hoge.ipynb --to pdf
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
numpy
x = np.array([
[1, 2, 1, 9, 10, 3, 2, 6, 7],
[2, 1, 8, 3, 7, 5, 10, 7, 2]])
np.corrcoef(x)
Puisque la valeur de retour est une matrice de coefficient de corrélation, vérifiez l'élément (1, 2) (ou l'élément (2, 1)).
Il existe argmax et argmin.
np.argmax(arr)
C'est correct de le faire en notation d'inclusion de liste, mais il y a np.arange
.
np.arange(5)
# array([0, 1, 2, 3, 4])
np.arange(3, 10, 2)
# array([3, 5, 7, 9])
np.linspace(2.0, 3.0, num=5)
# array([2. , 2.25, 2.5 , 2.75, 3. ])
np.logspace(3, 7, num=5, base=2)
# array([8, 16, 32, 64, 128])
Notez que l'argument est un taple
np.zeros((3, 4))
Il existe également un np.ones
qui initialise tous les éléments avec 1.
Les deux sont np.dot
np.dot(A, B)
C'est déroutant, vous devriez donc regarder https://note.nkmk.me/python-numpy-concatenate-stack-block/. Il existe une théorie selon laquelle il vaut mieux utiliser «numpy.stack».
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
np.concatenate([v1, v2])
# [1 2 3 4 5 6]
Notez que l'argument entier doit être une liste
«np.ravel» est plus rapide que le «flatten» intégré.
x = np.array([[1, 2, 3], [4, 5, 6]])
np.ravel(x)
# array([1, 2, 3, 4, 5, 6])
2 normes sont généralement utilisées
np.linalg.norm(X)
np.linalg.norm(X,ord=1) #1 norme
Au fait, np.linalg.norm
correspond également à la norme matricielle [^ 2].
Écrivez comme mat [:, 2]
mat =\
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60 61 62 63 64 65 66 67 68 69]
[70 71 72 73 74 75 76 77 78 79]
[80 81 82 83 84 85 86 87 88 89]
[90 91 92 93 94 95 96 97 98 99]]
mat[:,2]
# array([ 2, 12, 22, 32, 42, 52, 62, 72, 82, 92])
test = np.array([1, 2, 3, 4, 5])
np.delete(test, [1, 3])
# array([1, 3, 5])
** Ne peut pas être supprimé en tant que tranche! !! ** **
np.identity(5)
np.eye(5)
L'un ou l'autre va bien.
np.linalg.inv(A)
A.T
np.linalg.det(A)
une fonction | La description |
---|---|
np.linalg.eig | Valeur réelle / vecteur propre de la matrice générale |
np.linalg.eigh | Elmeat ou valeur propre / vecteur propre de matrice symétrique réelle |
np.linalg.eigvals | Valeur unique de la matrice générale (Ne calcule pas le vecteur propre) |
np.linalg.eigvalsh | Elmeat ou valeurs propres d'une matrice symétrique réelle (Ne calcule pas le vecteur propre) |
Puisque l'algorithme de recherche des valeurs propres dans une matrice symétrique est différent de celui d'une matrice générale, ** utilisez eigh et eigvalsh dans une matrice symétrique pour la précision **.
Dans la méthode qui obtient à la fois la valeur propre et le vecteur propre, la valeur de retour est renvoyée sous la forme d'un taple de (valeur propre, vecteur propre)
.
np.random.normal(size = 1000000)
np.random.normal(loc=1.0, scale=2.0, size=20)
Pour une distribution normale multivariée, utilisez multivariate_normal
mean = (1, 2)
cov = [[1, 0], [0, 1]]
np.random.multivariate_normal(mean, cov, 100)
np.random.uniform(size = 1000000)
np.random.uniform(low=1.0, high=2.0, size=20)
np.random.chisquare(2, 10000)
a = np.array([[3,1], [1,2]])
b = np.array([9,8])
np.linalg.solve(a, b)
# array([2., 3.])
Par exemple, transformer une matrice de taille (1, 12) en taille (3, 4).
a = array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
np.reshape(a, (3, 4))
# array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]])
En analyse numérique, une valeur qui est un indice de susceptibilité à l'erreur (on peut dire qu'une grande valeur est vulnérable à l'erreur)
np.linalg.cond(A, 2)
matplotlib
plt.figure(figsize=(8, 6)) #Graphique horizontal 8 x vertical 6
plt.title("This is title.") #Donnez un titre au graphique
#Nommez l'axe
plt.xlabel("Nombre d'essais")
#Changer la plage de l'axe
plt.ylim(0, 2.5)
# label=Dans la légende, la couleur=Avec couleur, style de ligne=Changer le style de ligne avec
plt.plot(X, Y, label="one")
plt.plot(X2, Y2, label="two")
plt.legend()
plt.show()
plt.yscale('log')
L'axe des y devient une échelle logarithmique.
plt.hist(x, bins=100)
«bacs» est le nombre de bacs (nombre de classes)
plt.scatter(x, y, marker='x', c='red')
Il y a des moments où je souhaite ajouter des courbes de niveau en complément, par exemple lors du dessin de l'état d'optimisation.
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
X, Y = np.meshgrid(x, y)
Z = np.sqrt(X**2 + Y**2)
plt.contour(X, Y, Z)
plt.gca().set_aspect('equal')
Les lignes de contour sont assez difficiles, vous devriez donc lire attentivement http://ailaby.com/contour/.
names = ['Alice', 'Bob', 'Charlie']
ages = [24, 50, 18]
for name, age in zip(names, ages):
print(name, age)
# Alice 24
# Bob 50
# Charlie 18
l = ['Alice', 'Bob', 'Charlie']
for i, name in enumerate(l):
print(i, name)
# 0 Alice
# 1 Bob
# 2 Charlie
print("i={} lambda={} x={}".format(i, l, x))
Les fonctions communes se trouvent généralement dans le module math
, même si elles ne proviennent pas de numpy. Vérifiez https://docs.python.org/ja/3/library/math.html pour plus de détails
from math import sin, cos, pi, exp
Recommended Posts