Erstellen Sie ein Array mit 11 Elementen von 0 bis 10
arr = np.arange(11)
arr
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Ich werde damit rechnen
np.sqrt(arr)
array([ 0. , 1. , 1.41421356, 1.73205081, 2. ,
2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ,
3.16227766])
Die Potenz von e ist erforderlich
np.exp(arr)
array([ 1.00000000e+00, 2.71828183e+00, 7.38905610e+00,
2.00855369e+01, 5.45981500e+01, 1.48413159e+02,
4.03428793e+02, 1.09663316e+03, 2.98095799e+03,
8.10308393e+03, 2.20264658e+04])
10 zufällige Rückgaben aus einer Verteilung mit einem Mittelwert von 0 und einer Varianz von 1
A = np.random.randn(10)
A
array([ 1.58618601, 1.04344798, -1.27389788, 0.96399318, -0.01948978,
1.74715498, -1.74566889, 0.22554911, -0.89309691, 0.64486646])
B = np.random.randn(10)
B
array([ 0.24123105, -1.68669802, 1.89703691, 0.13287126, -1.77419931,
-1.1523576 , -0.23598222, 0.03143082, 1.86305367, 0.21272997])
np.add(A,B)
array([ 1.82741706, -0.64325005, 0.62313903, 1.09686444, -1.79368909,
0.59479738, -1.98165111, 0.25697993, 0.96995677, 0.85759643])
Geben Sie das größere Element von A und B zurück
np.maximum(A,B)
array([ 1.58618601, 1.04344798, 1.89703691, 0.96399318, -0.01948978,
1.74715498, -0.23598222, 0.22554911, 1.86305367, 0.64486646])
import matplotlib.pyplot as plt
%matplotlib inline
-5 bis 5 in Schritten von 0,01
points = np.arange(-5,5,0.01)
dx, dy = np.meshgrid(points,points)
Von -5 bis 5 wächst es in Schritten von 0,01
dx
array([[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
...,
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99]])
Das Gegenteil von dx
dy
array([[-5. , -5. , -5. , ..., -5. , -5. , -5. ],
[-4.99, -4.99, -4.99, ..., -4.99, -4.99, -4.99],
[-4.98, -4.98, -4.98, ..., -4.98, -4.98, -4.98],
...,
[ 4.97, 4.97, 4.97, ..., 4.97, 4.97, 4.97],
[ 4.98, 4.98, 4.98, ..., 4.98, 4.98, 4.98],
[ 4.99, 4.99, 4.99, ..., 4.99, 4.99, 4.99]])
Versuchen Sie, diese zu zeichnen
plt.imshow(dx)
Sie können sehen, dass es von links nach rechts wächst
plt.imshow(dy)
Sie können sehen, dass es von oben nach unten wächst
Die Summe von dx und dy unter Verwendung der Dreiecksfunktion sin.
z = (np.sin(dx) + np.sin(dy))
z
array([[ 1.91784855e+00, 1.92063718e+00, 1.92332964e+00, ...,
-8.07710558e-03, -5.48108704e-03, -2.78862876e-03],
[ 1.92063718e+00, 1.92342581e+00, 1.92611827e+00, ...,
-5.28847682e-03, -2.69245827e-03, -5.85087534e-14],
[ 1.92332964e+00, 1.92611827e+00, 1.92881072e+00, ...,
-2.59601854e-03, -5.63993297e-14, 2.69245827e-03],
...,
[ -8.07710558e-03, -5.28847682e-03, -2.59601854e-03, ...,
-1.93400276e+00, -1.93140674e+00, -1.92871428e+00],
[ -5.48108704e-03, -2.69245827e-03, -5.63993297e-14, ...,
-1.93140674e+00, -1.92881072e+00, -1.92611827e+00],
[ -2.78862876e-03, -5.85087534e-14, 2.69245827e-03, ...,
-1.92871428e+00, -1.92611827e+00, -1.92342581e+00]])
Versuche zu zeichnen
plt.imshow(z)
plt.colorbar()
A = np.array([1,2,3,4])
B = np.array([1000,2000,3000,4000])
condition = np.array([True, True, False, False])
answer = [(a if cond else b) for a,b,cond in zip(A,B,condition)]
answer
[1,2,3000,4000]
Die Einschlussnotation der Liste hat die Nachteile, dass sie langsam ist und nicht in der Lage ist, mehrere Dimensionen zu verarbeiten. Erhöhen Sie die Geschwindigkeit, um mehrdimensionale Arrays aufzunehmen
answer2 = np.where(condition, A, B)
answer2
array([ 1, 2, 3000, 4000])
np.where kann auch für zweidimensionale Arrays verwendet werden Erstellen Sie zufällige Werte aus einer Standard-5x5-Normalverteilung
from numpy.random import randn
arr = randn(5,5)
arr
array([[-1.00937032, 1.23348883, 0.1267633 , 0.6637059 , 0.96770594],
[ 0.29606946, -0.63752513, 0.97016509, 0.42688117, -2.38404912],
[ 1.0549739 , -0.12309795, -0.22361239, 1.91466958, -0.35711905],
[ 0.22359192, -1.60330203, 1.23216518, -0.99154743, 0.52558739],
[-1.11301393, 0.1911824 , 1.14858049, -0.19331843, 0.42102773]])
Versuchen Sie, für diese Werte 0 zurückzugeben, wenn sie kleiner als 0 sind. Andernfalls geben Sie den ursprünglichen Wert zurück
np.where(arr < 0, 0, arr)
array([[ 0. , 1.23348883, 0.1267633 , 0.6637059 , 0.96770594],
[ 0.29606946, 0. , 0.97016509, 0.42688117, 0. ],
[ 1.0549739 , 0. , 0. , 1.91466958, 0. ],
[ 0.22359192, 0. , 1.23216518, 0. , 0.52558739],
[ 0. , 0.1911824 , 1.14858049, 0. , 0.42102773]])
Alle negativen Zahlen sind 0. Es ist sehr einfach zu schreiben.
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
Berechnung des Gesamtwertes
arr.sum()
45
Die Summenfunktion kann unterstützen, welche Achse mit der Berechnung fortzufahren ist. Wenn beispielsweise Argument 0 gesetzt ist, wird die Berechnung in Zeilenrichtung ausgeführt, und wenn Argument 1 gesetzt ist, wird die Berechnung in Spaltenrichtung durchgeführt.
arr.sum(0)
array([12, 15, 18])
arr.sum(1)
array([ 6, 15, 24])
Durchschnittswert
arr.mean()
5.0
Standardabweichung
arr.std()
2.5819888974716112
Verteilt
arr.var()
6.666666666666667
bool_arr = np.array([True, False, True])
bool_arr
array([ True, False, True], dtype=bool)
Wenn auch nur einer wahr ist, geben Sie True zurück
bool_arr.any()
True
Gibt True zurück, wenn alles wahr ist
bool_arr.all()
False
Recommended Posts