[PYTHON] Ich habe die Grundoperation von Numpy im Jupyter Lab geschrieben.

Dieser Artikel ist ein Artikel, den ich mit Jupyter Lab in Kame (@usdatascientist) 's Blog (https://datawokagaku.com/python_for_ds_summary/) beschrieben habe.

** Zusammenfassung der grundlegenden Operationen von NumPy **

Array

import numpy as np #Numpy als np importieren
np.array([1,2,3,4]) #Liste der Arrays
array([1, 2, 3, 4])
python_list = (1,2,3,4) #Liste von Python
python_list
(1, 2, 3, 4)
np.array([[1,2,3], [4,5,6],[7,8,9]]) #verschachtelte Liste des Arrays
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
[[1,2,3], [4,5,6],[7,8,9]] #Liste der verschachtelten Pythons
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Array-Berechnung

arr1 = np.array([[1,2,3], [4,5,6],[7,8,9]])
arr2 = np.array([[1,2,3], [4,5,6],[7,8,9]])
arr1
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
arr2
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
arr1 + arr2
array([[ 2,  4,  6],
       [ 8, 10, 12],
       [14, 16, 18]])
arr1 - arr2
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])
arr1 * arr2
array([[ 1,  4,  9],
       [16, 25, 36],
       [49, 64, 81]])
arr1 / arr2
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])
#Die fehlenden Elemente des Arrays[1,2,3]Wird automatisch ergänzt mit.(Broadcasting)
arr3= np.array([[1,2,3]])
arr4 = np.array([[1,2,3], [4,5,6],[7,8,9]])
arr3 + arr4 
array([[ 2,  4,  6],
       [ 5,  7,  9],
       [ 8, 10, 12]])
arr3 - arr4
array([[ 0,  0,  0],
       [-3, -3, -3],
       [-6, -6, -6]])
arr = np.array([[1,2,3], [4,5,6],[7,8,9]])
#Überprüfen Sie die Größe der Array-Matrix
arr.shape 
(3, 3)

Indexing

Der Index beginnt bei 0 und kann vom 0-1. Wert abgerufen werden.

ndarray = np.array([[1,2], [3,4],[5,6]])
ndarray
array([[1, 2],
       [3, 4],
       [5, 6]])
ndarray[1][0]
3
ndarray[1,0]
3

Slicing

Wenn das Schneiden [N: M] ist, wird das Element "N oder mehr und weniger als M" abgerufen.

arr = np.array([[1,2,3,4], [2,4,6,4], [3,5,7,4], [3,5,7,4]])
arr
array([[1, 2, 3, 4],
       [2, 4, 6, 4],
       [3, 5, 7, 4],
       [3, 5, 7, 4]])
arr[0:4, 2:4]
array([[3, 4],
       [6, 4],
       [7, 4],
       [7, 4]])
arr[:,2:] #Rufen Sie alle Elemente nach der zweiten Spalte aller Zeilen ab.
array([[3, 4],
       [6, 4],
       [7, 4],
       [7, 4]])
arr = np.array([1,2,3,4,2,4,6,4,5,7,4,5,7,4])
arr[1:6:2] #In zwei Teile schneiden
array([2, 4, 4])

Verschiedene Arrays

np.arange[(start,)stop(,step)]

np.arange(0,5,2) #[start, stop, step] #0~Liste der Werte, bei denen 5 durch 2 getrennt ist
array([0, 2, 4])
np.arange(5) #Startschritt kann weggelassen werden. Wenn nicht angegeben, werden standardmäßig 0 und 1 eingegeben.
array([0, 1, 2, 3, 4])
np.arange(0,5,0.1) #Schritt ist 0.1 Schritt ist ebenfalls möglich
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2,
       1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. , 2.1, 2.2, 2.3, 2.4, 2.5,
       2.6, 2.7, 2.8, 2.9, 3. , 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8,
       3.9, 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9])

np.linspace(start, stop, num=50)

np.linspace(1, 2, 20) #1~Teilen Sie 2 in 20 gleiche Teile
array([1.        , 1.05263158, 1.10526316, 1.15789474, 1.21052632,
       1.26315789, 1.31578947, 1.36842105, 1.42105263, 1.47368421,
       1.52631579, 1.57894737, 1.63157895, 1.68421053, 1.73684211,
       1.78947368, 1.84210526, 1.89473684, 1.94736842, 2.        ])

.copy()

arr_copy = arr.copy() 
arr_copy
array([0, 1, 2, 3, 4])
ndarray = np.arange(0, 5)
ndarray_copy = ndarray.copy()
print('original array is {}'.format(id(arr)))
print('copied array is {}'.format(id(arr))) #Das kopierte Objekt unterscheidet sich von der Kopierquelle
original array is 140571396284208
copied array is 140571396284208
ndarray[:] = 100
print('original array:\n', ndarray)    #Wenn Sie nicht kopieren, wird das ursprüngliche Array aktualisiert
print('copied array:\n', ndarray_copy) #Durch Kopieren wird das ursprüngliche Array nicht aktualisiert
original array:
 [100 100 100 100 100]
copied array:
 [0 1 2 3 4]
def add_world(hello):
    hello += ' world'
    return hello

h_str = 'hello'
h_list = ['h', 'e', 'l', 'l', 'o']
output_str = add_world(h_str)
output_list = add_world(h_list)

print('output_str: {}'.format(output_str)) #String wird als Wert übergeben, ändern Sie ihn also direkt
print('output_list: {}'.format(output_list)) #Die Liste wird als Referenz übergeben. Ändern Sie sie daher nicht direkt

print('h_str: {}'.format(h_str))
print('h_list: {}'.format(h_list))
output_str: hello world
output_list: ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
h_str: hello
h_list: ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
def change_hundred(array):
    
    array[0] = 100 #Wenn Sie nicht kopieren, wird das ursprüngliche Array aktualisiert
    return array

def change_hundred_copy(array):
    
    array_copy = array.copy() #Durch Kopieren wird das ursprüngliche Array nicht aktualisiert
    array_copy[0] = 100
    return array_copy

array_1 = np.arange(0, 4)
array_2 = np.arange(0,4)

output_array = change_hundred(array_1)
output_array_copy = change_hundred_copy(array_2)

print('original_array_1/n', array_1)
print('original_array2/n', array_2)
original_array_1/n [100   1   2   3]
original_array2/n [0 1 2 3]

np.zeros(shape)

shape = (2,3,5) #Nullmatrix
zeros = np.zeros(shape)
print(zeros)
[[[0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0.]]

 [[0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0.]]]

np.ones(shape)

shape = (2,3,5)
ones_array_1 = np.ones(shape)
ones_array_2 = np.ones(4)

print(ones_array_1)
print(ones_array_2)
[[[1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]]

 [[1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]]]
[1. 1. 1. 1.]

np.eye(N)

np.eye(3) #N *Einheitsmatrix von N. Die diagonalen Komponenten sind alle 1.
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

np.random.rand()

random_float = np.random.rand() # 0~Gibt eine Zufallszahl von 1 zurück.
random_1d = np.random.rand(3)
random_2d = np.random.rand(3, 4)

print('random_float:{}'.format(random_float))
print('random_1d:{}'.format(random_1d))
print('random_2d:{}'.format(random_2d))
random_float:0.48703321814513356/n
random_1d:[0.27824053 0.60682459 0.22001138]
random_2d:[[0.52285782 0.87272074 0.03123286 0.7921472 ]
 [0.80209903 0.26478273 0.91139303 0.63077037]
 [0.72151924 0.91234378 0.69355857 0.9969298 ]]

np.random.randn()

random_float = np.random.randn() #Die Werte werden von den Standardnormalverteilungen 0 bis 1 zurückgegeben.
random_1d = np.random.randn(3)
random_2d = np.random.randn(3, 4)

print('random_float:{}'.format(random_float))
print('random_1d:{}'.format(random_1d))
print('random_2d:{}'.format(random_2d))
random_float:-0.013248078417389888
random_1d:[-1.11606544 -0.24693187  0.17212059]
random_2d:[[-0.85896581  0.53993487  0.09458454  1.3505381 ]
 [-1.83510873  0.09966918 -0.22293729  0.58218476]
 [ 0.37403933  0.83349568  0.73407002 -0.32979339]]

np.random.randint(low[,high][,size])

np.random.randint(10, 50, size=(2,4,3)) #Gibt zufällig ein ndarray der angegebenen Größe aus Ganzzahlen zurück, die größer oder gleich niedrig und kleiner als hoch sind. Diesmal sind es 2D 4 Zeilen 3 Spalten.
array([[[30, 14, 11],
        [33, 24, 48],
        [15, 43, 41],
        [18, 26, 49]],

       [[18, 22, 16],
        [15, 10, 43],
        [43, 48, 10],
        [42, 29, 10]]])

.reshape(shape)

array = np.arange(0, 10)
print('array:{}'.format(array))
new_shape = (2, 5)
reshaped_array = array.reshape(new_shape)

print('reshaped array:{}'.format(reshaped_array))
print("reshaped array's is {}".format(reshaped_array.reshape))
print('original array is NOT changed:{}'.format(array))
array:[0 1 2 3 4 5 6 7 8 9]
reshaped array:[[0 1 2 3 4]
 [5 6 7 8 9]]
reshaped array's is <built-in method reshape of numpy.ndarray object at 0x7fd9420d8030>
original array is NOT changed:[0 1 2 3 4 5 6 7 8 9]

Suchen Sie die Statistiken des Elements

normal_dist_mat = np.random.randn(5,5)
print(normal_dist_mat) 
[[-1.51861663 -2.09873943 -0.99761607  0.95395101 -0.04577882]
 [-0.81944941  0.54339984  0.45265577 -2.56369775 -1.8300719 ]
 [ 0.63372482 -0.35763135  0.31683655  1.44185989 -1.2110421 ]
 [-1.56200024  1.17061544  1.35721624 -0.46023814  0.3496441 ]
 [ 1.09102475 -0.47551934 -0.75747612  0.34564251  1.62400795]]

.max () Maximalwert

print('max is')
print(normal_dist_mat.max()) 
max is
1.6240079549859363

.argmax () Ermittelt den Index des Maximalwerts.

print('argmax is')
print(normal_dist_mat.argmax()) 
argmax is
24

.flatten () [] Setzen Sie die in index = 9 gespeicherten Werte in eine Reihe.

normal_dist_mat.flatten()[9] 
-1.83007190063398

.min () Mindestwert

print('min is')
print(normal_dist_mat.min()) 
min is
-2.5636977453276137

.argmin () Ermittelt den Mindestindex.

print('argmin is')
print(normal_dist_mat.argmin()) 
argmax is
8

.mean () Durchschnittswert

print('mean is') 
print(normal_dist_mat.mean())
mean is
-0.1766919366579146

np.median (ndarray) Medianwert

print('median is')
print(np.median(normal_dist_mat)) 
median is
-0.04577882007895756

.std () Standardabweichung

print('standard deviation is')
print(normal_dist_mat.std())
standard deviation is
1.1634432893009636
print(normal_dist_mat.std())  #Alle oben genannten Funktionen sind np.Funktionsname(ndarray)Kann auch von angerufen werden
1.1634432893009636
print(normal_dist_mat) #Wenn Sie die Statistiken für eine bestimmte Zeile oder Spalte suchen möchten, geben Sie das Achsenargument an.
print('axis=0 > {}'.format(normal_dist_mat.max(axis=0))) #axis=Wenn 0 angegeben ist, wird die Statistik für jede Spalte,
print('axis=1 > {}'.format(normal_dist_mat.max(axis=1))) #axis=Wenn 1 angegeben ist, werden die Statistiken für jede Zeile zurückgegeben.
[[-1.51861663 -2.09873943 -0.99761607  0.95395101 -0.04577882]
 [-0.81944941  0.54339984  0.45265577 -2.56369775 -1.8300719 ]
 [ 0.63372482 -0.35763135  0.31683655  1.44185989 -1.2110421 ]
 [-1.56200024  1.17061544  1.35721624 -0.46023814  0.3496441 ]
 [ 1.09102475 -0.47551934 -0.75747612  0.34564251  1.62400795]]
axis=0 > [1.09102475 1.17061544 1.35721624 1.44185989 1.62400795]
axis=1 > [0.95395101 0.54339984 1.44185989 1.35721624 1.62400795]

In der Mathematik verwendete Funktionen

np.exp(ndarray)

ndarray = np.linspace(-3,3,10)
expndarray = np.exp(ndarray)
print(ndarray)
print(expndarray)
[-3.         -2.33333333 -1.66666667 -1.         -0.33333333  0.33333333
  1.          1.66666667  2.33333333  3.        ]
[ 0.04978707  0.09697197  0.1888756   0.36787944  0.71653131  1.39561243
  2.71828183  5.29449005 10.3122585  20.08553692]

np.log(nd.array)

ndarray = np.linspace(-3,3,10)
logndarray = np.log(ndarray)
print(ndarray)
print(logndarray) #Negative Werte können nicht logarithmisch sein, also nan.
[-3.         -2.33333333 -1.66666667 -1.         -0.33333333  0.33333333
  1.          1.66666667  2.33333333  3.        ]
[        nan         nan         nan         nan         nan -1.09861229
  0.          0.51082562  0.84729786  1.09861229]


/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:2: RuntimeWarning: invalid value encountered in log
print(logndarray[0])
print('nan ==None? {}'.format(logndarray[0] is None))
nan
nan ==None? False
np.isnan(logndarray[0])
True

np.e

print(np.e)
print(np.log(np.e))
2.718281828459045
1.0

ndarray Formoperation

ndarray = np.array([[1,2,3], [4,5,6], [7,8,9]])
print('array is :{}'.format(ndarray))
print("ndarray's shape is :{}".format(ndarray.shape)) #Die Anzahl der Dimensionen wird als Rang bezeichnet.
array is :[[1 2 3]
 [4 5 6]
 [7 8 9]]
ndarray's shape is :(3, 3)

np.expand_dims(nd.array, axis)

expanded_ndarray = np.expand_dims(ndarray, axis=0) #Dimension hinzufügen
expanded_ndarray.shape
(1, 3, 3)

np.squeeze(ndarray)

squeezed_ndarray = np.squeeze(expanded_ndarray) #Beseitigen Sie eine Dimension der Form.
squeezed_ndarray.shape
(3, 3)

.flatten()

flatten_array = ndarray.flatten() #Bilden Sie eine Reihe
print('flatten_array is :{}'.format(flatten_array))
print('ndarray is :{}'.format(ndarray))
flatten_array is :[1 2 3 4 5 6 7 8 9]
ndarray is :[[1 2 3]
 [4 5 6]
 [7 8 9]]

Speichern und laden Sie Numpy Array

np.save ('Dateipfad', ndarray)

ndarray = np.array([
    [1,2,3,4],
    [10,20,30,40],
    [100,200,300,400]
])
np.save('saved_numpy', ndarray)

np.load ('Dateipfad')

loaded_numpy = np.load('saved_numpy.npy')
loaded_numpy
array([[  1,   2,   3,   4],
       [ 10,  20,  30,  40],
       [100, 200, 300, 400]])

Recommended Posts

Ich habe die Grundoperation von Numpy im Jupyter Lab geschrieben.
Ich habe die Grundoperation von Seaborn im Jupyter Lab geschrieben
Ich habe die Grundoperation von matplotlib in Jupyter Lab geschrieben
Ich habe die Grundoperation von Pandas im Jupyter Lab geschrieben (Teil 1)
Ich habe die grundlegende Operation von Pandas im Jupyter Lab geschrieben (Teil 2).
Ich habe die grundlegende Grammatik von Python in Jupyter Lab geschrieben
Ich habe die Warteschlange in Python geschrieben
Ich habe den Stack in Python geschrieben
Ich habe den Code geschrieben, um den Brainf * ck-Code in Python zu schreiben
Erstellen Sie eine Ausführungsumgebung für Jupyter Lab
Schriftliche Auswahlsortierung in C.
Ich habe den Gleitflügel in der Schöpfung geschrieben.
Ich habe die Liste der Tastenkombinationen von Jupyter überprüft
Ich habe die Verarbeitungsgeschwindigkeit der numpy eindimensionalisierung überprüft
[Basic Information Engineer Examination] Ich habe den Algorithmus der euklidischen Methode der gegenseitigen Teilung in Python geschrieben.
Grundlegende Bedienung von Pandas
Grundlegende Bedienung von Pandas
[Tipps] Speichern / kopieren Sie das in Jupyter Lab angezeigte Diagramm
[Hinweis] Das installierte Modul kann nicht im Jupiter aufgerufen werden.
Ich habe GP mit Numpy geschrieben
Ich habe Python auf Japanisch geschrieben
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
[Wissenschaftlich-technische Berechnung von Python] Grundlegende Operation des Arrays, numpy
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
Ich habe es in der Sprache Go geschrieben, um das SOLID-Prinzip zu verstehen
Ändern Sie das Thema von Jupyter
Ich möchte die gültigen Zahlen im Numpy-Array ausrichten
Ich schrieb einen Test in "Ich habe versucht, die Wahrscheinlichkeit eines Bingospiels mit Python zu simulieren".
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Teil 1 Ich habe die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt
Ich habe die Berechnungszeit des in Python geschriebenen gleitenden Durchschnitts verglichen
[Python] Ich habe die Route des Taifuns mit Folium auf die Karte geschrieben
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
Ich habe mich im Labyrinth verlaufen
Die Geschichte der Teilnahme an AtCoder
Ich habe den Mechanismus der Flaschenanmeldung untersucht!
Ich habe an der ISUCON10-Qualifikationsrunde teilgenommen!
Ich habe Fizz Buzz in Python geschrieben
Über den Grundtyp von Go
Ich habe Gray Scale mit Pytorch geschrieben
[Basic Information Engineer Examination] Ich habe einen Algorithmus für den Maximalwert eines Arrays in Python geschrieben.
[Ich habe den Raspberry Pi (1) berührt] Ich habe die grundlegenden Funktionen der Minecraft Pi Edition (Vorabversion 2015.5.23) zusammengefasst.
Ein leicht verständlicher Vergleich der grundlegenden Grammatik von Python und Go
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Ich möchte die abstrakte Klasse (ABCmeta) von Python im Detail erklären
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Notiz der Pixelpositionsoperation für Bilddaten mit Python (numpy, cv2)
Ich habe einen Korpusleser geschrieben, der die Ergebnisse der MeCab-Analyse liest
[Python] Ich habe gewaltsam eine kurze Funktion zur Erzeugung von Parlin-Geräuschen in Numpy geschrieben.
Ich möchte einen beliebigen Befehl im Befehlsverlauf von Shell belassen
Zum ersten Mal in Numpy werde ich es von Zeit zu Zeit aktualisieren
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe einen Fehler beim Abrufen der Hierarchie mit MultiIndex von Pandas gemacht
Ich habe versucht, den Höhenwert von DTM in einem Diagramm anzuzeigen
Ich habe versucht, berührungsbezogene Methoden im Szenenmodul von Pythonista zu berühren
Darstellung von Containern in einem verschachtelten Rahmen (schematisch) in Jupyter und was ich bei der Erstellung untersucht habe
Teil 1 Ich habe ein Beispiel für die Antwort auf das Referenzproblem geschrieben, wie man in Python in Echtzeit offline schreibt