[PYTHON] Jupyter-, Numpy- und Matplotlib-Notizen, die in Berichten verwendet werden

Privates Memo.

Jupyter

Umgebung

jupyter_contrib_nbextensions ist für die PDF-Ausgabe, die später beschrieben wird, und für die Fertigstellung in Jupyter enthalten und nicht unbedingt erforderlich.

pip install jupyter jupyter_contrib_nbextensions
pip install matplotlib numpy #Fügen Sie weitere erforderliche Elemente hinzu

Starten Sie Jupyter in Ihrem Browser

Ich dachte, es wäre besser in VSCode als im Browser, aber ich habe doch nicht gewechselt.

jupyter notebook --ip=127.0.0.1 --allow-root

Ändern Sie das Thema von Jupyter

Sie können das Modul "jupyterthemes" einfügen oder selbst mit "~ / .jupyter / custom / custom.css" spielen.

Im ersteren Fall

Ich verwende https://gist.github.com/7ma7X/54f5e0b60e39ae8826bfcc580d524e40 als custom.css.

Ausgabe Jupyter als pdf

jupyter nbconvert hoge.ipynb --to pdf

Magie

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

numpy

Korrelationskoeffizient

x = np.array([
  [1, 2, 1, 9, 10, 3, 2, 6, 7],
  [2, 1, 8, 3, 7, 5, 10, 7, 2]]) 

np.corrcoef(x)

Da der Rückgabewert eine Korrelationskoeffizientenmatrix ist, überprüfen Sie das Element (1, 2) (oder (2, 1)).

Index, der den maximalen (kleinen) Wert annimmt

Es gibt Argmax und Argmin.

np.argmax(arr)

Gleiche Differenznummernfolge

Es ist in Ordnung, es in Listeneinschlussnotation zu machen, aber es gibt np.arange.

np.arange(5)
# array([0, 1, 2, 3, 4])

np.arange(3, 10, 2)
# array([3, 5, 7, 9])

Eine Zahlenfolge, die den angegebenen Abschnitt in N gleiche Teile unterteilt

np.linspace(2.0, 3.0, num=5)
# array([2.  , 2.25, 2.5 , 2.75, 3.  ])

Sequenz mit gleichem Verhältnis

np.logspace(3, 7, num=5, base=2)
# array([8, 16, 32, 64, 128])

Matrixinitialisierung

Beachten Sie, dass das Argument ein Taple ist

np.zeros((3, 4))

Es gibt auch ein np.ones, das alle Elemente mit 1 initialisiert.

Inneres Produkt von Vektoren, Produkt von Matrizen

Beide sind np.dot

np.dot(A, B)

Verkettung von Vektoren und Matrizen

Es ist verwirrend, daher sollten Sie sich https://note.nkmk.me/python-numpy-concatenate-stack-block/ ansehen. Es gibt eine Theorie, dass es besser ist, "numpy.stack" zu verwenden.

v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])

np.concatenate([v1, v2])
# [1 2 3 4 5 6]

Beachten Sie, dass das gesamte Argument eine Liste sein muss

Zerquetschen Sie ein mehrdimensionales Array in ein eindimensionales Array

np.ravel ist schneller als die eingebaute Abflachung.

x = np.array([[1, 2, 3], [4, 5, 6]])
np.ravel(x)
# array([1, 2, 3, 4, 5, 6])

Vektorlänge (Norm)

Normalerweise werden 2 Normen verwendet

np.linalg.norm(X)
np.linalg.norm(X,ord=1) #1 Norm

Übrigens entspricht np.linalg.norm auch der Matrixnorm [^ 2].

Extraktion von Spalten in einer Matrix

Schreiben Sie wie 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])

Entfernen Sie bestimmte Elemente aus dem Array

test = np.array([1, 2, 3, 4, 5])
np.delete(test, [1, 3])
# array([1, 3, 5])

** Kann nicht als Slice gelöscht werden! !! ** ** **

Einheitsmatrix

np.identity(5)
np.eye(5)

Ist beides okay.

Inverse Matrix

np.linalg.inv(A)

Translokationsmatrix

A.T

Matrixformel

np.linalg.det(A)

Eindeutiger Wert / eindeutiger Vektor

Funktion Erläuterung
np.linalg.eig Echter Wert / Eigenvektor der allgemeinen Matrix
np.linalg.eigh Elmeat oder Eigenwert / Eigenvektor der reellen symmetrischen Matrix
np.linalg.eigvals Eindeutiger Wert der allgemeinen Matrix
Berechnet keinen Eigenvektor
np.linalg.eigvalsh Elmeat oder Eigenwert der realen symmetrischen Matrix
Berechnet keinen Eigenvektor

Da sich der Algorithmus zum Ermitteln des Eigenwerts in der symmetrischen Matrix von der allgemeinen Matrix unterscheidet, ** verwenden Sie für die Genauigkeit ** eigh und eigvalsh in der symmetrischen Matrix **.

Bei der Methode, die sowohl den Eigenwert als auch den Eigenvektor erhält, wird der Rückgabewert als Taple von "(Eigenwert, Eigenvektor)" zurückgegeben.

Zufallszahl

Zufallszahlen, die einer Normalverteilung folgen

np.random.normal(size = 1000000)
np.random.normal(loc=1.0, scale=2.0, size=20) 

Verwenden Sie für die multivariate Normalverteilung "multivariate_normal"

mean = (1, 2)
cov = [[1, 0], [0, 1]]
np.random.multivariate_normal(mean, cov, 100)

Zufallszahlen, die einer gleichmäßigen Verteilung folgen

np.random.uniform(size = 1000000)
np.random.uniform(low=1.0, high=2.0, size=20) 

Zufallszahl nach Chi-Quadrat-Verteilung

np.random.chisquare(2, 10000)

Sonstiges sonstiges Material

Löse simultane lineare Gleichungen

a = np.array([[3,1], [1,2]])
b = np.array([9,8])
np.linalg.solve(a, b)
# array([2.,  3.])

Matrixtransformation

Beispiel: Transformieren einer (1, 12) Größenmatrix in (3, 4) Größe.

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]])

Anzahl der Bedingungen

In der numerischen Analyse ein Wert, der ein Index für die Fehleranfälligkeit ist (man kann sagen, dass ein großer Wert fehleranfällig ist).

np.linalg.cond(A, 2)

matplotlib

Grundlegendes Diagramm

plt.figure(figsize=(8, 6)) #Horizontale 8 x vertikale 6 Grafik
plt.title("This is title.") #Geben Sie dem Diagramm einen Titel

#Benennen Sie die Achse
plt.xlabel("Anzahl von Versuchen")

#Ändern Sie den Bereich der Achse
plt.ylim(0, 2.5)

# label=In der Legende Farbe=Mit Farbe, Linestyle=Ändern Sie den Linienstil mit
plt.plot(X, Y, label="one") 
plt.plot(X2, Y2, label="two")

plt.legend()
plt.show()

Logistisches Diagramm

plt.yscale('log')

Die y-Achse wird zur logarithmischen Skala.

Histogramm

plt.hist(x, bins=100)

Bins ist die Anzahl der Bins (Anzahl der Klassen)

Streudiagramm

plt.scatter(x, y, marker='x', c='red')

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')

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

Es gibt Zeiten, in denen ich Konturlinien als Ergänzung hinzufügen möchte, z. B. beim Zeichnen des Optimierungsstatus. Konturlinien sind ziemlich schwierig, daher sollten Sie http://ailaby.com/contour/ sorgfältig lesen. Andere Python-Codierungstechniken Mehrere Listen zusammenschleifen (zip) Indizierte Schleifenformatanweisung (Aufzählung)

print("i={} lambda={} x={}".format(i, l, x))

Mathematische Funktion

Allgemeine Funktionen finden Sie normalerweise im Modul math, auch wenn sie nicht von numpy stammen. Weitere Informationen finden Sie unter https://docs.python.org/ja/3/library/math.html

from math import sin, cos, pi, exp

Recommended Posts

Jupyter-, Numpy- und Matplotlib-Notizen, die in Berichten verwendet werden
Einstellungen, die häufig in Jupyter verwendet werden
Zusammenfassung der häufig verwendeten Befehle in matplotlib
ipython + jupyter + plotly (matplotlib) Einstellungen und Verwendungshinweise
wo von numpy
Jupyter-Studie note_006
Bash in Jupyter
Jupyter-Studie note_008
Jupyter-Studie note_004
Jupyter-Studie note_001
Legen Sie matplotlib in Centos7.
Jupyter Official Docker Hub Notizen
Achsenspezifikation mit NumPy
Bilder mit Matplotlib anzeigen
2D-Plot in Matplotlib
Layouthinweise zur Matplotlib-Legende
Jupyter in Cloud9 IDE
[Numpy / Pandas / Matplotlib Übung 01]
Ich habe die Grundoperation von Numpy im Jupyter Lab geschrieben.
Schreiben Sie Diagramme in Echtzeit mit Matplotlib auf dem Jupyter-Notizbuch
Hinweise zur Farbfärbung im Matplotlib-Streudiagramm