Wprowadzenie do numpy¶

Do czego służy:

  • obliczenia numeryczne (mnożenie i dodawanie macierzy, diagonalizacja czy odwrócenie, rozwiązywanie równań)
  • tworzenie specjalizowanych typów danych, operacji i funkcji, których nie ma w typowej instalacji Pythona
In [1]:
import numpy as np
In [2]:
# jak dotychczas reprezentowaliśmy macierze (tablice 2x2):
X = [[1, 2, 3], [4, 5, 6]]
print(X)
print(type(X))
[[1, 2, 3], [4, 5, 6]]
<class 'list'>
In [3]:
# ndarray - klasa, najważniejszy obiekt: tablica obiektów (zazwyczaj liczb)
X = np.array([1, 2, 3])
print(X)
X = np.array([[1, 2, 3], [4, 5, 6]])
print(X)
print(type(X))
[1 2 3]
[[1 2 3]
 [4 5 6]]
<class 'numpy.ndarray'>
In [4]:
print(X)
X[0][0] = 50
print(X)
X[0,0] = 100 # jak X[0][0]
print(X)
[[1 2 3]
 [4 5 6]]
[[50  2  3]
 [ 4  5  6]]
[[100   2   3]
 [  4   5   6]]

Slicing¶

In [5]:
# Przypomnienie: dla list i stringów slicing tworzy kopię obiektu
a = [1,2,3,4,5]
b = a[:]

a[2] = -1
print(a)
print(b)
[1, 2, -1, 4, 5]
[1, 2, 3, 4, 5]
In [6]:
X = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [2, 2, 1, 1]])
print(X)
[[1 2 3 4]
 [4 5 6 7]
 [2 2 1 1]]
In [7]:
Y = X[:, :] # wszystkie wiersze i kolumny
print(Y)
[[1 2 3 4]
 [4 5 6 7]
 [2 2 1 1]]
In [8]:
Y = X[:2, :] # wiersze < 2, wszystkie kolumny
print(Y)
[[1 2 3 4]
 [4 5 6 7]]
In [9]:
Y = X[1:3, :] # wiersze 1, 2
print(Y)
[[4 5 6 7]
 [2 2 1 1]]
In [10]:
Y = X[:2, 2:] # wiersze 0, 1, kolumny 2 i dalej
print(Y)
[[3 4]
 [6 7]]
In [11]:
Y[0,0] = 1000
print(Y)
print(X) # zmieniła się!
[[1000    4]
 [   6    7]]
[[   1    2 1000    4]
 [   4    5    6    7]
 [   2    2    1    1]]
In [12]:
Y = X[1, :]
print(Y)

Y = X[:, 1]
print(Y)

Y = X[1:2, :]
print(Y)
[4 5 6 7]
[2 5 2]
[[4 5 6 7]]

Proste charakterystyki danych¶

In [13]:
X = np.array([[1, 2, 3], [4, 5, 6]])
print(X)
[[1 2 3]
 [4 5 6]]
In [14]:
print(np.sum(X)) # suma wszystkich elementów tablicy
print(np.sum(X, axis=0)) # sumowanie po kolumnach
print(np.sum(X, axis=1)) # sumowanie po wierszach
21
[5 7 9]
[ 6 15]
In [15]:
print(np.cumsum(X))
print(np.cumsum(X, axis=0))
print(np.cumsum(X, axis=1))
[ 1  3  6 10 15 21]
[[1 2 3]
 [5 7 9]]
[[ 1  3  6]
 [ 4  9 15]]
In [16]:
print(np.mean(X))
print(np.mean(X, axis=0))
print(np.mean(X, axis=1))
3.5
[2.5 3.5 4.5]
[2. 5.]
In [17]:
print(np.std(X))
print(np.std(X, axis=0))
print(np.std(X, axis=1))
1.707825127659933
[1.5 1.5 1.5]
[0.81649658 0.81649658]
In [18]:
print(np.max(X))
print(np.max(X, axis=0))
print(np.max(X, axis=1))
6
[4 5 6]
[3 6]
In [19]:
print(np.min(X))
print(np.min(X, axis=0))
print(np.min(X, axis=1))
1
[1 2 3]
[1 4]

Tworzenie tablic¶

(macierz to dwuwymiarowa tablica)

In [20]:
X = np.zeros((2,3)) # macierz zerowa rozmiaru 2x3 [a 2x3x4?].
print(X)
[[0. 0. 0.]
 [0. 0. 0.]]
In [21]:
X = np.ones((2,2)) # macierz z samymi jedynkami rozmiaru 2x2.
print(X)
[[1. 1.]
 [1. 1.]]
In [22]:
X = np.full((3,3), 2024) # macierz rozmiaru 3x3 z każdą pozycją równą 2024.
print(X)
[[2024 2024 2024]
 [2024 2024 2024]
 [2024 2024 2024]]
In [23]:
X = np.eye(5) # macierz identycznościowa rozmiaru 5x5.
print(X)
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
In [24]:
X = np.arange(-np.pi, np.pi, 0.1) # punkty [-pi, -pi+0.1, -pi+0.2, ...] z przedziału [-pi, pi).
print(X)
[-3.14159265 -3.04159265 -2.94159265 -2.84159265 -2.74159265 -2.64159265
 -2.54159265 -2.44159265 -2.34159265 -2.24159265 -2.14159265 -2.04159265
 -1.94159265 -1.84159265 -1.74159265 -1.64159265 -1.54159265 -1.44159265
 -1.34159265 -1.24159265 -1.14159265 -1.04159265 -0.94159265 -0.84159265
 -0.74159265 -0.64159265 -0.54159265 -0.44159265 -0.34159265 -0.24159265
 -0.14159265 -0.04159265  0.05840735  0.15840735  0.25840735  0.35840735
  0.45840735  0.55840735  0.65840735  0.75840735  0.85840735  0.95840735
  1.05840735  1.15840735  1.25840735  1.35840735  1.45840735  1.55840735
  1.65840735  1.75840735  1.85840735  1.95840735  2.05840735  2.15840735
  2.25840735  2.35840735  2.45840735  2.55840735  2.65840735  2.75840735
  2.85840735  2.95840735  3.05840735]
In [25]:
X = np.linspace(0,1,13) # 13 punktów równoodległych w przedziale [0,1].
print(X)
[0.         0.08333333 0.16666667 0.25       0.33333333 0.41666667
 0.5        0.58333333 0.66666667 0.75       0.83333333 0.91666667
 1.        ]
In [26]:
print(np.repeat(3, 4)) # powtórz 4 razy wartość 3
print(np.repeat(np.array([1,2,3]), 2)) 
print(np.tile(np.array([1,2,3]), 2)) # porównaj z poprzednim.
[3 3 3 3]
[1 1 2 2 3 3]
[1 2 3 1 2 3]

Operacje macierzowe¶

Transpozycja¶

In [27]:
M = np.array([[1, 2, 3], [4, 5, 6]])
print(M)
print(M.shape)
[[1 2 3]
 [4 5 6]]
(2, 3)
In [28]:
print(M.T)
print(M.T.shape)
[[1 4]
 [2 5]
 [3 6]]
(3, 2)
In [29]:
A = np.array([1, 2]) # wektor 1D
print(A)
print(A.shape)
[1 2]
(2,)
In [30]:
B = np.array([[3], [4]]) # macierz 2D rozmiaru 2x1
print(B)
print(B.shape)
[[3]
 [4]]
(2, 1)
In [31]:
print(A.T) # transpozycja wektora 1D - ten sam wektor!
print(A.T.shape)
[1 2]
(2,)
In [32]:
print(B.T)
print(B.T.shape)
[[3 4]]
(1, 2)
In [33]:
print(A[np.newaxis]) # wektor 1D rozszerzony do macierzy 2D rozmiaru 1x2
print(A[np.newaxis].shape)
[[1 2]]
(1, 2)
In [34]:
print(A[np.newaxis].T)
print(A[np.newaxis].T.shape)
[[1]
 [2]]
(2, 1)

Zmiana kształtu, sklejanie tablic¶

In [35]:
X = np.arange(1,10)
print(X)

Y = X.reshape(3, 3)  # też widok!
print(Y)
Y[1,1] = 1000
print(X)
[1 2 3 4 5 6 7 8 9]
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[   1    2    3    4 1000    6    7    8    9]
In [36]:
X = np.array([[1, 2], [3, 4]])
Y = np.array([[10, 20], [30, 40]])
print(X)
print(Y)
[[1 2]
 [3 4]]
[[10 20]
 [30 40]]
In [37]:
print(np.vstack((X,Y)))
print("-----------------------")
print(np.hstack((X,Y)))
[[ 1  2]
 [ 3  4]
 [10 20]
 [30 40]]
-----------------------
[[ 1  2 10 20]
 [ 3  4 30 40]]

Arytmetyka na tablicach¶

In [38]:
# Przypomnienie: jak działa mnożenie dla list i napisów.
print("123"*10)
a = [1,2,3]
print(a * 3)

print("*"*30)
print([x*3 for x in a])
123123123123123123123123123123
[1, 2, 3, 1, 2, 3, 1, 2, 3]
******************************
[3, 6, 9]
In [39]:
try:
    print(a+5) # błąd!
except TypeError:
    print("tu padł wyjątek!")
tu padł wyjątek!
In [40]:
Y = np.arange(1,10).reshape((3,3))

print(Y)
print(Y * 3) # produkt Hadamarda (ukryty)
print(Y + 77)
print(Y * Y) # produkt Hadamarda
print(Y @ Y) # mnożenie macierzowe (__matmul__)
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[ 3  6  9]
 [12 15 18]
 [21 24 27]]
[[78 79 80]
 [81 82 83]
 [84 85 86]]
[[ 1  4  9]
 [16 25 36]
 [49 64 81]]
[[ 30  36  42]
 [ 66  81  96]
 [102 126 150]]
In [41]:
Z = np.repeat(2, 3)
print(Z)
print(Z * Y) # broadcasting + mnożenie po współrzędnych
print(Y @ Z) # mnożenie macierzowe
print(Z @ Y) # mnożenie macierzowe, Z interpretowany jako macierz 1x3
[2 2 2]
[[ 2  4  6]
 [ 8 10 12]
 [14 16 18]]
[12 30 48]
[24 30 36]
Źródło: Python Data Science Handbook, na licencji CC-BY-NC-ND.

Wybór indeksów¶

In [42]:
X = np.array(range(10,20))
print(X)
Y = X % 2
print(Y)
Z = Y == 1
print(Z)
print(X[Z]) 
print(np.where(Z)) # pozycje na których wartość jest równa True
[10 11 12 13 14 15 16 17 18 19]
[0 1 0 1 0 1 0 1 0 1]
[False  True False  True False  True False  True False  True]
[11 13 15 17 19]
(array([1, 3, 5, 7, 9], dtype=int64),)
In [43]:
X = np.array(range(10,20))
print(X > 14)
print(X <= 18)
print((X > 14) & (X <= 18))
print(X[(X > 14) & (X <= 18)]) # dwa warunki, & zamiast and!
[False False False False False  True  True  True  True  True]
[ True  True  True  True  True  True  True  True  True False]
[False False False False False  True  True  True  True False]
[15 16 17 18]

Wyznacznik i odwracanie macierzy¶

In [44]:
A = np.array([[0, 3, 2], [1, 0, 4], [0, 3, 6]])
print(A)
print(np.linalg.det(A))
[[0 3 2]
 [1 0 4]
 [0 3 6]]
-12.0
In [45]:
B = np.linalg.inv(A)
print(B)
[[ 1.          1.         -1.        ]
 [ 0.5         0.         -0.16666667]
 [-0.25        0.          0.25      ]]
In [46]:
Y = np.array([3, -1, 2])
print(B @ Y)
[ 0.          1.16666667 -0.25      ]

Unique¶

In [47]:
unique = np.unique([1, 1, 2, 2, 2, 3, 3, 67, -1])
print(unique)

unique, counts = np.unique([1, 1, 2, 2, 2, 3, 3, 67, -1], return_counts=True)
print(unique, counts)
[-1  1  2  3 67]
[-1  1  2  3 67] [1 2 3 2 1]

Opcje wyświetlania¶

In [48]:
X = np.arange(-np.pi, np.pi, 0.01)
print(X)
[-3.14159265e+00 -3.13159265e+00 -3.12159265e+00 -3.11159265e+00
 -3.10159265e+00 -3.09159265e+00 -3.08159265e+00 -3.07159265e+00
 -3.06159265e+00 -3.05159265e+00 -3.04159265e+00 -3.03159265e+00
 -3.02159265e+00 -3.01159265e+00 -3.00159265e+00 -2.99159265e+00
 -2.98159265e+00 -2.97159265e+00 -2.96159265e+00 -2.95159265e+00
 -2.94159265e+00 -2.93159265e+00 -2.92159265e+00 -2.91159265e+00
 -2.90159265e+00 -2.89159265e+00 -2.88159265e+00 -2.87159265e+00
 -2.86159265e+00 -2.85159265e+00 -2.84159265e+00 -2.83159265e+00
 -2.82159265e+00 -2.81159265e+00 -2.80159265e+00 -2.79159265e+00
 -2.78159265e+00 -2.77159265e+00 -2.76159265e+00 -2.75159265e+00
 -2.74159265e+00 -2.73159265e+00 -2.72159265e+00 -2.71159265e+00
 -2.70159265e+00 -2.69159265e+00 -2.68159265e+00 -2.67159265e+00
 -2.66159265e+00 -2.65159265e+00 -2.64159265e+00 -2.63159265e+00
 -2.62159265e+00 -2.61159265e+00 -2.60159265e+00 -2.59159265e+00
 -2.58159265e+00 -2.57159265e+00 -2.56159265e+00 -2.55159265e+00
 -2.54159265e+00 -2.53159265e+00 -2.52159265e+00 -2.51159265e+00
 -2.50159265e+00 -2.49159265e+00 -2.48159265e+00 -2.47159265e+00
 -2.46159265e+00 -2.45159265e+00 -2.44159265e+00 -2.43159265e+00
 -2.42159265e+00 -2.41159265e+00 -2.40159265e+00 -2.39159265e+00
 -2.38159265e+00 -2.37159265e+00 -2.36159265e+00 -2.35159265e+00
 -2.34159265e+00 -2.33159265e+00 -2.32159265e+00 -2.31159265e+00
 -2.30159265e+00 -2.29159265e+00 -2.28159265e+00 -2.27159265e+00
 -2.26159265e+00 -2.25159265e+00 -2.24159265e+00 -2.23159265e+00
 -2.22159265e+00 -2.21159265e+00 -2.20159265e+00 -2.19159265e+00
 -2.18159265e+00 -2.17159265e+00 -2.16159265e+00 -2.15159265e+00
 -2.14159265e+00 -2.13159265e+00 -2.12159265e+00 -2.11159265e+00
 -2.10159265e+00 -2.09159265e+00 -2.08159265e+00 -2.07159265e+00
 -2.06159265e+00 -2.05159265e+00 -2.04159265e+00 -2.03159265e+00
 -2.02159265e+00 -2.01159265e+00 -2.00159265e+00 -1.99159265e+00
 -1.98159265e+00 -1.97159265e+00 -1.96159265e+00 -1.95159265e+00
 -1.94159265e+00 -1.93159265e+00 -1.92159265e+00 -1.91159265e+00
 -1.90159265e+00 -1.89159265e+00 -1.88159265e+00 -1.87159265e+00
 -1.86159265e+00 -1.85159265e+00 -1.84159265e+00 -1.83159265e+00
 -1.82159265e+00 -1.81159265e+00 -1.80159265e+00 -1.79159265e+00
 -1.78159265e+00 -1.77159265e+00 -1.76159265e+00 -1.75159265e+00
 -1.74159265e+00 -1.73159265e+00 -1.72159265e+00 -1.71159265e+00
 -1.70159265e+00 -1.69159265e+00 -1.68159265e+00 -1.67159265e+00
 -1.66159265e+00 -1.65159265e+00 -1.64159265e+00 -1.63159265e+00
 -1.62159265e+00 -1.61159265e+00 -1.60159265e+00 -1.59159265e+00
 -1.58159265e+00 -1.57159265e+00 -1.56159265e+00 -1.55159265e+00
 -1.54159265e+00 -1.53159265e+00 -1.52159265e+00 -1.51159265e+00
 -1.50159265e+00 -1.49159265e+00 -1.48159265e+00 -1.47159265e+00
 -1.46159265e+00 -1.45159265e+00 -1.44159265e+00 -1.43159265e+00
 -1.42159265e+00 -1.41159265e+00 -1.40159265e+00 -1.39159265e+00
 -1.38159265e+00 -1.37159265e+00 -1.36159265e+00 -1.35159265e+00
 -1.34159265e+00 -1.33159265e+00 -1.32159265e+00 -1.31159265e+00
 -1.30159265e+00 -1.29159265e+00 -1.28159265e+00 -1.27159265e+00
 -1.26159265e+00 -1.25159265e+00 -1.24159265e+00 -1.23159265e+00
 -1.22159265e+00 -1.21159265e+00 -1.20159265e+00 -1.19159265e+00
 -1.18159265e+00 -1.17159265e+00 -1.16159265e+00 -1.15159265e+00
 -1.14159265e+00 -1.13159265e+00 -1.12159265e+00 -1.11159265e+00
 -1.10159265e+00 -1.09159265e+00 -1.08159265e+00 -1.07159265e+00
 -1.06159265e+00 -1.05159265e+00 -1.04159265e+00 -1.03159265e+00
 -1.02159265e+00 -1.01159265e+00 -1.00159265e+00 -9.91592654e-01
 -9.81592654e-01 -9.71592654e-01 -9.61592654e-01 -9.51592654e-01
 -9.41592654e-01 -9.31592654e-01 -9.21592654e-01 -9.11592654e-01
 -9.01592654e-01 -8.91592654e-01 -8.81592654e-01 -8.71592654e-01
 -8.61592654e-01 -8.51592654e-01 -8.41592654e-01 -8.31592654e-01
 -8.21592654e-01 -8.11592654e-01 -8.01592654e-01 -7.91592654e-01
 -7.81592654e-01 -7.71592654e-01 -7.61592654e-01 -7.51592654e-01
 -7.41592654e-01 -7.31592654e-01 -7.21592654e-01 -7.11592654e-01
 -7.01592654e-01 -6.91592654e-01 -6.81592654e-01 -6.71592654e-01
 -6.61592654e-01 -6.51592654e-01 -6.41592654e-01 -6.31592654e-01
 -6.21592654e-01 -6.11592654e-01 -6.01592654e-01 -5.91592654e-01
 -5.81592654e-01 -5.71592654e-01 -5.61592654e-01 -5.51592654e-01
 -5.41592654e-01 -5.31592654e-01 -5.21592654e-01 -5.11592654e-01
 -5.01592654e-01 -4.91592654e-01 -4.81592654e-01 -4.71592654e-01
 -4.61592654e-01 -4.51592654e-01 -4.41592654e-01 -4.31592654e-01
 -4.21592654e-01 -4.11592654e-01 -4.01592654e-01 -3.91592654e-01
 -3.81592654e-01 -3.71592654e-01 -3.61592654e-01 -3.51592654e-01
 -3.41592654e-01 -3.31592654e-01 -3.21592654e-01 -3.11592654e-01
 -3.01592654e-01 -2.91592654e-01 -2.81592654e-01 -2.71592654e-01
 -2.61592654e-01 -2.51592654e-01 -2.41592654e-01 -2.31592654e-01
 -2.21592654e-01 -2.11592654e-01 -2.01592654e-01 -1.91592654e-01
 -1.81592654e-01 -1.71592654e-01 -1.61592654e-01 -1.51592654e-01
 -1.41592654e-01 -1.31592654e-01 -1.21592654e-01 -1.11592654e-01
 -1.01592654e-01 -9.15926536e-02 -8.15926536e-02 -7.15926536e-02
 -6.15926536e-02 -5.15926536e-02 -4.15926536e-02 -3.15926536e-02
 -2.15926536e-02 -1.15926536e-02 -1.59265359e-03  8.40734641e-03
  1.84073464e-02  2.84073464e-02  3.84073464e-02  4.84073464e-02
  5.84073464e-02  6.84073464e-02  7.84073464e-02  8.84073464e-02
  9.84073464e-02  1.08407346e-01  1.18407346e-01  1.28407346e-01
  1.38407346e-01  1.48407346e-01  1.58407346e-01  1.68407346e-01
  1.78407346e-01  1.88407346e-01  1.98407346e-01  2.08407346e-01
  2.18407346e-01  2.28407346e-01  2.38407346e-01  2.48407346e-01
  2.58407346e-01  2.68407346e-01  2.78407346e-01  2.88407346e-01
  2.98407346e-01  3.08407346e-01  3.18407346e-01  3.28407346e-01
  3.38407346e-01  3.48407346e-01  3.58407346e-01  3.68407346e-01
  3.78407346e-01  3.88407346e-01  3.98407346e-01  4.08407346e-01
  4.18407346e-01  4.28407346e-01  4.38407346e-01  4.48407346e-01
  4.58407346e-01  4.68407346e-01  4.78407346e-01  4.88407346e-01
  4.98407346e-01  5.08407346e-01  5.18407346e-01  5.28407346e-01
  5.38407346e-01  5.48407346e-01  5.58407346e-01  5.68407346e-01
  5.78407346e-01  5.88407346e-01  5.98407346e-01  6.08407346e-01
  6.18407346e-01  6.28407346e-01  6.38407346e-01  6.48407346e-01
  6.58407346e-01  6.68407346e-01  6.78407346e-01  6.88407346e-01
  6.98407346e-01  7.08407346e-01  7.18407346e-01  7.28407346e-01
  7.38407346e-01  7.48407346e-01  7.58407346e-01  7.68407346e-01
  7.78407346e-01  7.88407346e-01  7.98407346e-01  8.08407346e-01
  8.18407346e-01  8.28407346e-01  8.38407346e-01  8.48407346e-01
  8.58407346e-01  8.68407346e-01  8.78407346e-01  8.88407346e-01
  8.98407346e-01  9.08407346e-01  9.18407346e-01  9.28407346e-01
  9.38407346e-01  9.48407346e-01  9.58407346e-01  9.68407346e-01
  9.78407346e-01  9.88407346e-01  9.98407346e-01  1.00840735e+00
  1.01840735e+00  1.02840735e+00  1.03840735e+00  1.04840735e+00
  1.05840735e+00  1.06840735e+00  1.07840735e+00  1.08840735e+00
  1.09840735e+00  1.10840735e+00  1.11840735e+00  1.12840735e+00
  1.13840735e+00  1.14840735e+00  1.15840735e+00  1.16840735e+00
  1.17840735e+00  1.18840735e+00  1.19840735e+00  1.20840735e+00
  1.21840735e+00  1.22840735e+00  1.23840735e+00  1.24840735e+00
  1.25840735e+00  1.26840735e+00  1.27840735e+00  1.28840735e+00
  1.29840735e+00  1.30840735e+00  1.31840735e+00  1.32840735e+00
  1.33840735e+00  1.34840735e+00  1.35840735e+00  1.36840735e+00
  1.37840735e+00  1.38840735e+00  1.39840735e+00  1.40840735e+00
  1.41840735e+00  1.42840735e+00  1.43840735e+00  1.44840735e+00
  1.45840735e+00  1.46840735e+00  1.47840735e+00  1.48840735e+00
  1.49840735e+00  1.50840735e+00  1.51840735e+00  1.52840735e+00
  1.53840735e+00  1.54840735e+00  1.55840735e+00  1.56840735e+00
  1.57840735e+00  1.58840735e+00  1.59840735e+00  1.60840735e+00
  1.61840735e+00  1.62840735e+00  1.63840735e+00  1.64840735e+00
  1.65840735e+00  1.66840735e+00  1.67840735e+00  1.68840735e+00
  1.69840735e+00  1.70840735e+00  1.71840735e+00  1.72840735e+00
  1.73840735e+00  1.74840735e+00  1.75840735e+00  1.76840735e+00
  1.77840735e+00  1.78840735e+00  1.79840735e+00  1.80840735e+00
  1.81840735e+00  1.82840735e+00  1.83840735e+00  1.84840735e+00
  1.85840735e+00  1.86840735e+00  1.87840735e+00  1.88840735e+00
  1.89840735e+00  1.90840735e+00  1.91840735e+00  1.92840735e+00
  1.93840735e+00  1.94840735e+00  1.95840735e+00  1.96840735e+00
  1.97840735e+00  1.98840735e+00  1.99840735e+00  2.00840735e+00
  2.01840735e+00  2.02840735e+00  2.03840735e+00  2.04840735e+00
  2.05840735e+00  2.06840735e+00  2.07840735e+00  2.08840735e+00
  2.09840735e+00  2.10840735e+00  2.11840735e+00  2.12840735e+00
  2.13840735e+00  2.14840735e+00  2.15840735e+00  2.16840735e+00
  2.17840735e+00  2.18840735e+00  2.19840735e+00  2.20840735e+00
  2.21840735e+00  2.22840735e+00  2.23840735e+00  2.24840735e+00
  2.25840735e+00  2.26840735e+00  2.27840735e+00  2.28840735e+00
  2.29840735e+00  2.30840735e+00  2.31840735e+00  2.32840735e+00
  2.33840735e+00  2.34840735e+00  2.35840735e+00  2.36840735e+00
  2.37840735e+00  2.38840735e+00  2.39840735e+00  2.40840735e+00
  2.41840735e+00  2.42840735e+00  2.43840735e+00  2.44840735e+00
  2.45840735e+00  2.46840735e+00  2.47840735e+00  2.48840735e+00
  2.49840735e+00  2.50840735e+00  2.51840735e+00  2.52840735e+00
  2.53840735e+00  2.54840735e+00  2.55840735e+00  2.56840735e+00
  2.57840735e+00  2.58840735e+00  2.59840735e+00  2.60840735e+00
  2.61840735e+00  2.62840735e+00  2.63840735e+00  2.64840735e+00
  2.65840735e+00  2.66840735e+00  2.67840735e+00  2.68840735e+00
  2.69840735e+00  2.70840735e+00  2.71840735e+00  2.72840735e+00
  2.73840735e+00  2.74840735e+00  2.75840735e+00  2.76840735e+00
  2.77840735e+00  2.78840735e+00  2.79840735e+00  2.80840735e+00
  2.81840735e+00  2.82840735e+00  2.83840735e+00  2.84840735e+00
  2.85840735e+00  2.86840735e+00  2.87840735e+00  2.88840735e+00
  2.89840735e+00  2.90840735e+00  2.91840735e+00  2.92840735e+00
  2.93840735e+00  2.94840735e+00  2.95840735e+00  2.96840735e+00
  2.97840735e+00  2.98840735e+00  2.99840735e+00  3.00840735e+00
  3.01840735e+00  3.02840735e+00  3.03840735e+00  3.04840735e+00
  3.05840735e+00  3.06840735e+00  3.07840735e+00  3.08840735e+00
  3.09840735e+00  3.10840735e+00  3.11840735e+00  3.12840735e+00
  3.13840735e+00]
In [49]:
np.set_printoptions(suppress=True) # pozbycie się notacji naukowej
print(X)
[-3.14159265 -3.13159265 -3.12159265 -3.11159265 -3.10159265 -3.09159265
 -3.08159265 -3.07159265 -3.06159265 -3.05159265 -3.04159265 -3.03159265
 -3.02159265 -3.01159265 -3.00159265 -2.99159265 -2.98159265 -2.97159265
 -2.96159265 -2.95159265 -2.94159265 -2.93159265 -2.92159265 -2.91159265
 -2.90159265 -2.89159265 -2.88159265 -2.87159265 -2.86159265 -2.85159265
 -2.84159265 -2.83159265 -2.82159265 -2.81159265 -2.80159265 -2.79159265
 -2.78159265 -2.77159265 -2.76159265 -2.75159265 -2.74159265 -2.73159265
 -2.72159265 -2.71159265 -2.70159265 -2.69159265 -2.68159265 -2.67159265
 -2.66159265 -2.65159265 -2.64159265 -2.63159265 -2.62159265 -2.61159265
 -2.60159265 -2.59159265 -2.58159265 -2.57159265 -2.56159265 -2.55159265
 -2.54159265 -2.53159265 -2.52159265 -2.51159265 -2.50159265 -2.49159265
 -2.48159265 -2.47159265 -2.46159265 -2.45159265 -2.44159265 -2.43159265
 -2.42159265 -2.41159265 -2.40159265 -2.39159265 -2.38159265 -2.37159265
 -2.36159265 -2.35159265 -2.34159265 -2.33159265 -2.32159265 -2.31159265
 -2.30159265 -2.29159265 -2.28159265 -2.27159265 -2.26159265 -2.25159265
 -2.24159265 -2.23159265 -2.22159265 -2.21159265 -2.20159265 -2.19159265
 -2.18159265 -2.17159265 -2.16159265 -2.15159265 -2.14159265 -2.13159265
 -2.12159265 -2.11159265 -2.10159265 -2.09159265 -2.08159265 -2.07159265
 -2.06159265 -2.05159265 -2.04159265 -2.03159265 -2.02159265 -2.01159265
 -2.00159265 -1.99159265 -1.98159265 -1.97159265 -1.96159265 -1.95159265
 -1.94159265 -1.93159265 -1.92159265 -1.91159265 -1.90159265 -1.89159265
 -1.88159265 -1.87159265 -1.86159265 -1.85159265 -1.84159265 -1.83159265
 -1.82159265 -1.81159265 -1.80159265 -1.79159265 -1.78159265 -1.77159265
 -1.76159265 -1.75159265 -1.74159265 -1.73159265 -1.72159265 -1.71159265
 -1.70159265 -1.69159265 -1.68159265 -1.67159265 -1.66159265 -1.65159265
 -1.64159265 -1.63159265 -1.62159265 -1.61159265 -1.60159265 -1.59159265
 -1.58159265 -1.57159265 -1.56159265 -1.55159265 -1.54159265 -1.53159265
 -1.52159265 -1.51159265 -1.50159265 -1.49159265 -1.48159265 -1.47159265
 -1.46159265 -1.45159265 -1.44159265 -1.43159265 -1.42159265 -1.41159265
 -1.40159265 -1.39159265 -1.38159265 -1.37159265 -1.36159265 -1.35159265
 -1.34159265 -1.33159265 -1.32159265 -1.31159265 -1.30159265 -1.29159265
 -1.28159265 -1.27159265 -1.26159265 -1.25159265 -1.24159265 -1.23159265
 -1.22159265 -1.21159265 -1.20159265 -1.19159265 -1.18159265 -1.17159265
 -1.16159265 -1.15159265 -1.14159265 -1.13159265 -1.12159265 -1.11159265
 -1.10159265 -1.09159265 -1.08159265 -1.07159265 -1.06159265 -1.05159265
 -1.04159265 -1.03159265 -1.02159265 -1.01159265 -1.00159265 -0.99159265
 -0.98159265 -0.97159265 -0.96159265 -0.95159265 -0.94159265 -0.93159265
 -0.92159265 -0.91159265 -0.90159265 -0.89159265 -0.88159265 -0.87159265
 -0.86159265 -0.85159265 -0.84159265 -0.83159265 -0.82159265 -0.81159265
 -0.80159265 -0.79159265 -0.78159265 -0.77159265 -0.76159265 -0.75159265
 -0.74159265 -0.73159265 -0.72159265 -0.71159265 -0.70159265 -0.69159265
 -0.68159265 -0.67159265 -0.66159265 -0.65159265 -0.64159265 -0.63159265
 -0.62159265 -0.61159265 -0.60159265 -0.59159265 -0.58159265 -0.57159265
 -0.56159265 -0.55159265 -0.54159265 -0.53159265 -0.52159265 -0.51159265
 -0.50159265 -0.49159265 -0.48159265 -0.47159265 -0.46159265 -0.45159265
 -0.44159265 -0.43159265 -0.42159265 -0.41159265 -0.40159265 -0.39159265
 -0.38159265 -0.37159265 -0.36159265 -0.35159265 -0.34159265 -0.33159265
 -0.32159265 -0.31159265 -0.30159265 -0.29159265 -0.28159265 -0.27159265
 -0.26159265 -0.25159265 -0.24159265 -0.23159265 -0.22159265 -0.21159265
 -0.20159265 -0.19159265 -0.18159265 -0.17159265 -0.16159265 -0.15159265
 -0.14159265 -0.13159265 -0.12159265 -0.11159265 -0.10159265 -0.09159265
 -0.08159265 -0.07159265 -0.06159265 -0.05159265 -0.04159265 -0.03159265
 -0.02159265 -0.01159265 -0.00159265  0.00840735  0.01840735  0.02840735
  0.03840735  0.04840735  0.05840735  0.06840735  0.07840735  0.08840735
  0.09840735  0.10840735  0.11840735  0.12840735  0.13840735  0.14840735
  0.15840735  0.16840735  0.17840735  0.18840735  0.19840735  0.20840735
  0.21840735  0.22840735  0.23840735  0.24840735  0.25840735  0.26840735
  0.27840735  0.28840735  0.29840735  0.30840735  0.31840735  0.32840735
  0.33840735  0.34840735  0.35840735  0.36840735  0.37840735  0.38840735
  0.39840735  0.40840735  0.41840735  0.42840735  0.43840735  0.44840735
  0.45840735  0.46840735  0.47840735  0.48840735  0.49840735  0.50840735
  0.51840735  0.52840735  0.53840735  0.54840735  0.55840735  0.56840735
  0.57840735  0.58840735  0.59840735  0.60840735  0.61840735  0.62840735
  0.63840735  0.64840735  0.65840735  0.66840735  0.67840735  0.68840735
  0.69840735  0.70840735  0.71840735  0.72840735  0.73840735  0.74840735
  0.75840735  0.76840735  0.77840735  0.78840735  0.79840735  0.80840735
  0.81840735  0.82840735  0.83840735  0.84840735  0.85840735  0.86840735
  0.87840735  0.88840735  0.89840735  0.90840735  0.91840735  0.92840735
  0.93840735  0.94840735  0.95840735  0.96840735  0.97840735  0.98840735
  0.99840735  1.00840735  1.01840735  1.02840735  1.03840735  1.04840735
  1.05840735  1.06840735  1.07840735  1.08840735  1.09840735  1.10840735
  1.11840735  1.12840735  1.13840735  1.14840735  1.15840735  1.16840735
  1.17840735  1.18840735  1.19840735  1.20840735  1.21840735  1.22840735
  1.23840735  1.24840735  1.25840735  1.26840735  1.27840735  1.28840735
  1.29840735  1.30840735  1.31840735  1.32840735  1.33840735  1.34840735
  1.35840735  1.36840735  1.37840735  1.38840735  1.39840735  1.40840735
  1.41840735  1.42840735  1.43840735  1.44840735  1.45840735  1.46840735
  1.47840735  1.48840735  1.49840735  1.50840735  1.51840735  1.52840735
  1.53840735  1.54840735  1.55840735  1.56840735  1.57840735  1.58840735
  1.59840735  1.60840735  1.61840735  1.62840735  1.63840735  1.64840735
  1.65840735  1.66840735  1.67840735  1.68840735  1.69840735  1.70840735
  1.71840735  1.72840735  1.73840735  1.74840735  1.75840735  1.76840735
  1.77840735  1.78840735  1.79840735  1.80840735  1.81840735  1.82840735
  1.83840735  1.84840735  1.85840735  1.86840735  1.87840735  1.88840735
  1.89840735  1.90840735  1.91840735  1.92840735  1.93840735  1.94840735
  1.95840735  1.96840735  1.97840735  1.98840735  1.99840735  2.00840735
  2.01840735  2.02840735  2.03840735  2.04840735  2.05840735  2.06840735
  2.07840735  2.08840735  2.09840735  2.10840735  2.11840735  2.12840735
  2.13840735  2.14840735  2.15840735  2.16840735  2.17840735  2.18840735
  2.19840735  2.20840735  2.21840735  2.22840735  2.23840735  2.24840735
  2.25840735  2.26840735  2.27840735  2.28840735  2.29840735  2.30840735
  2.31840735  2.32840735  2.33840735  2.34840735  2.35840735  2.36840735
  2.37840735  2.38840735  2.39840735  2.40840735  2.41840735  2.42840735
  2.43840735  2.44840735  2.45840735  2.46840735  2.47840735  2.48840735
  2.49840735  2.50840735  2.51840735  2.52840735  2.53840735  2.54840735
  2.55840735  2.56840735  2.57840735  2.58840735  2.59840735  2.60840735
  2.61840735  2.62840735  2.63840735  2.64840735  2.65840735  2.66840735
  2.67840735  2.68840735  2.69840735  2.70840735  2.71840735  2.72840735
  2.73840735  2.74840735  2.75840735  2.76840735  2.77840735  2.78840735
  2.79840735  2.80840735  2.81840735  2.82840735  2.83840735  2.84840735
  2.85840735  2.86840735  2.87840735  2.88840735  2.89840735  2.90840735
  2.91840735  2.92840735  2.93840735  2.94840735  2.95840735  2.96840735
  2.97840735  2.98840735  2.99840735  3.00840735  3.01840735  3.02840735
  3.03840735  3.04840735  3.05840735  3.06840735  3.07840735  3.08840735
  3.09840735  3.10840735  3.11840735  3.12840735  3.13840735]
In [50]:
np.set_printoptions(precision=5) # wyświetlanie tylko 5 miejsc po przecinku
print(X)
[-3.14159 -3.13159 -3.12159 -3.11159 -3.10159 -3.09159 -3.08159 -3.07159
 -3.06159 -3.05159 -3.04159 -3.03159 -3.02159 -3.01159 -3.00159 -2.99159
 -2.98159 -2.97159 -2.96159 -2.95159 -2.94159 -2.93159 -2.92159 -2.91159
 -2.90159 -2.89159 -2.88159 -2.87159 -2.86159 -2.85159 -2.84159 -2.83159
 -2.82159 -2.81159 -2.80159 -2.79159 -2.78159 -2.77159 -2.76159 -2.75159
 -2.74159 -2.73159 -2.72159 -2.71159 -2.70159 -2.69159 -2.68159 -2.67159
 -2.66159 -2.65159 -2.64159 -2.63159 -2.62159 -2.61159 -2.60159 -2.59159
 -2.58159 -2.57159 -2.56159 -2.55159 -2.54159 -2.53159 -2.52159 -2.51159
 -2.50159 -2.49159 -2.48159 -2.47159 -2.46159 -2.45159 -2.44159 -2.43159
 -2.42159 -2.41159 -2.40159 -2.39159 -2.38159 -2.37159 -2.36159 -2.35159
 -2.34159 -2.33159 -2.32159 -2.31159 -2.30159 -2.29159 -2.28159 -2.27159
 -2.26159 -2.25159 -2.24159 -2.23159 -2.22159 -2.21159 -2.20159 -2.19159
 -2.18159 -2.17159 -2.16159 -2.15159 -2.14159 -2.13159 -2.12159 -2.11159
 -2.10159 -2.09159 -2.08159 -2.07159 -2.06159 -2.05159 -2.04159 -2.03159
 -2.02159 -2.01159 -2.00159 -1.99159 -1.98159 -1.97159 -1.96159 -1.95159
 -1.94159 -1.93159 -1.92159 -1.91159 -1.90159 -1.89159 -1.88159 -1.87159
 -1.86159 -1.85159 -1.84159 -1.83159 -1.82159 -1.81159 -1.80159 -1.79159
 -1.78159 -1.77159 -1.76159 -1.75159 -1.74159 -1.73159 -1.72159 -1.71159
 -1.70159 -1.69159 -1.68159 -1.67159 -1.66159 -1.65159 -1.64159 -1.63159
 -1.62159 -1.61159 -1.60159 -1.59159 -1.58159 -1.57159 -1.56159 -1.55159
 -1.54159 -1.53159 -1.52159 -1.51159 -1.50159 -1.49159 -1.48159 -1.47159
 -1.46159 -1.45159 -1.44159 -1.43159 -1.42159 -1.41159 -1.40159 -1.39159
 -1.38159 -1.37159 -1.36159 -1.35159 -1.34159 -1.33159 -1.32159 -1.31159
 -1.30159 -1.29159 -1.28159 -1.27159 -1.26159 -1.25159 -1.24159 -1.23159
 -1.22159 -1.21159 -1.20159 -1.19159 -1.18159 -1.17159 -1.16159 -1.15159
 -1.14159 -1.13159 -1.12159 -1.11159 -1.10159 -1.09159 -1.08159 -1.07159
 -1.06159 -1.05159 -1.04159 -1.03159 -1.02159 -1.01159 -1.00159 -0.99159
 -0.98159 -0.97159 -0.96159 -0.95159 -0.94159 -0.93159 -0.92159 -0.91159
 -0.90159 -0.89159 -0.88159 -0.87159 -0.86159 -0.85159 -0.84159 -0.83159
 -0.82159 -0.81159 -0.80159 -0.79159 -0.78159 -0.77159 -0.76159 -0.75159
 -0.74159 -0.73159 -0.72159 -0.71159 -0.70159 -0.69159 -0.68159 -0.67159
 -0.66159 -0.65159 -0.64159 -0.63159 -0.62159 -0.61159 -0.60159 -0.59159
 -0.58159 -0.57159 -0.56159 -0.55159 -0.54159 -0.53159 -0.52159 -0.51159
 -0.50159 -0.49159 -0.48159 -0.47159 -0.46159 -0.45159 -0.44159 -0.43159
 -0.42159 -0.41159 -0.40159 -0.39159 -0.38159 -0.37159 -0.36159 -0.35159
 -0.34159 -0.33159 -0.32159 -0.31159 -0.30159 -0.29159 -0.28159 -0.27159
 -0.26159 -0.25159 -0.24159 -0.23159 -0.22159 -0.21159 -0.20159 -0.19159
 -0.18159 -0.17159 -0.16159 -0.15159 -0.14159 -0.13159 -0.12159 -0.11159
 -0.10159 -0.09159 -0.08159 -0.07159 -0.06159 -0.05159 -0.04159 -0.03159
 -0.02159 -0.01159 -0.00159  0.00841  0.01841  0.02841  0.03841  0.04841
  0.05841  0.06841  0.07841  0.08841  0.09841  0.10841  0.11841  0.12841
  0.13841  0.14841  0.15841  0.16841  0.17841  0.18841  0.19841  0.20841
  0.21841  0.22841  0.23841  0.24841  0.25841  0.26841  0.27841  0.28841
  0.29841  0.30841  0.31841  0.32841  0.33841  0.34841  0.35841  0.36841
  0.37841  0.38841  0.39841  0.40841  0.41841  0.42841  0.43841  0.44841
  0.45841  0.46841  0.47841  0.48841  0.49841  0.50841  0.51841  0.52841
  0.53841  0.54841  0.55841  0.56841  0.57841  0.58841  0.59841  0.60841
  0.61841  0.62841  0.63841  0.64841  0.65841  0.66841  0.67841  0.68841
  0.69841  0.70841  0.71841  0.72841  0.73841  0.74841  0.75841  0.76841
  0.77841  0.78841  0.79841  0.80841  0.81841  0.82841  0.83841  0.84841
  0.85841  0.86841  0.87841  0.88841  0.89841  0.90841  0.91841  0.92841
  0.93841  0.94841  0.95841  0.96841  0.97841  0.98841  0.99841  1.00841
  1.01841  1.02841  1.03841  1.04841  1.05841  1.06841  1.07841  1.08841
  1.09841  1.10841  1.11841  1.12841  1.13841  1.14841  1.15841  1.16841
  1.17841  1.18841  1.19841  1.20841  1.21841  1.22841  1.23841  1.24841
  1.25841  1.26841  1.27841  1.28841  1.29841  1.30841  1.31841  1.32841
  1.33841  1.34841  1.35841  1.36841  1.37841  1.38841  1.39841  1.40841
  1.41841  1.42841  1.43841  1.44841  1.45841  1.46841  1.47841  1.48841
  1.49841  1.50841  1.51841  1.52841  1.53841  1.54841  1.55841  1.56841
  1.57841  1.58841  1.59841  1.60841  1.61841  1.62841  1.63841  1.64841
  1.65841  1.66841  1.67841  1.68841  1.69841  1.70841  1.71841  1.72841
  1.73841  1.74841  1.75841  1.76841  1.77841  1.78841  1.79841  1.80841
  1.81841  1.82841  1.83841  1.84841  1.85841  1.86841  1.87841  1.88841
  1.89841  1.90841  1.91841  1.92841  1.93841  1.94841  1.95841  1.96841
  1.97841  1.98841  1.99841  2.00841  2.01841  2.02841  2.03841  2.04841
  2.05841  2.06841  2.07841  2.08841  2.09841  2.10841  2.11841  2.12841
  2.13841  2.14841  2.15841  2.16841  2.17841  2.18841  2.19841  2.20841
  2.21841  2.22841  2.23841  2.24841  2.25841  2.26841  2.27841  2.28841
  2.29841  2.30841  2.31841  2.32841  2.33841  2.34841  2.35841  2.36841
  2.37841  2.38841  2.39841  2.40841  2.41841  2.42841  2.43841  2.44841
  2.45841  2.46841  2.47841  2.48841  2.49841  2.50841  2.51841  2.52841
  2.53841  2.54841  2.55841  2.56841  2.57841  2.58841  2.59841  2.60841
  2.61841  2.62841  2.63841  2.64841  2.65841  2.66841  2.67841  2.68841
  2.69841  2.70841  2.71841  2.72841  2.73841  2.74841  2.75841  2.76841
  2.77841  2.78841  2.79841  2.80841  2.81841  2.82841  2.83841  2.84841
  2.85841  2.86841  2.87841  2.88841  2.89841  2.90841  2.91841  2.92841
  2.93841  2.94841  2.95841  2.96841  2.97841  2.98841  2.99841  3.00841
  3.01841  3.02841  3.03841  3.04841  3.05841  3.06841  3.07841  3.08841
  3.09841  3.10841  3.11841  3.12841  3.13841]

Wczytywanie i zapisywanie do pliku¶

In [51]:
wines = np.genfromtxt("wine.txt", delimiter=',', skip_header=1)
In [52]:
print(wines)
print(wines.dtype)
[[   1.     14.23    1.71 ...    1.04    3.92 1065.  ]
 [   1.     13.2     1.78 ...    1.05    3.4  1050.  ]
 [   1.     13.16    2.36 ...    1.03    3.17 1185.  ]
 ...
 [   3.     13.27    4.28 ...    0.59    1.56  835.  ]
 [   3.     13.17    2.59 ...    0.6     1.62  840.  ]
 [   3.     14.13    4.1  ...    0.61    1.6   560.  ]]
float64
In [53]:
mushrooms = np.genfromtxt("mushrooms.txt", delimiter=',', skip_header=1, dtype=str)
In [54]:
print(mushrooms)
print(mushrooms.dtype)
[['p' 'x' 's' ... 'k' 's' 'u']
 ['e' 'x' 's' ... 'n' 'n' 'g']
 ['e' 'b' 's' ... 'n' 'n' 'm']
 ...
 ['e' 'f' 's' ... 'b' 'c' 'l']
 ['p' 'k' 'y' ... 'w' 'v' 'l']
 ['e' 'x' 's' ... 'o' 'c' 'l']]
<U1
In [55]:
X = np.linspace(0,1,13)
print(X)

print('-------------------')
np.savetxt('test.txt', X)
print(np.loadtxt('test.txt'))
[0.      0.08333 0.16667 0.25    0.33333 0.41667 0.5     0.58333 0.66667
 0.75    0.83333 0.91667 1.     ]
-------------------
[0.      0.08333 0.16667 0.25    0.33333 0.41667 0.5     0.58333 0.66667
 0.75    0.83333 0.91667 1.     ]

Generatory liczb losowych¶

In [56]:
from matplotlib import pyplot as plt
In [57]:
# od 3.6 też w standardowym random:
X = np.random.choice([1,2,3,4,5,6], 1000, p=[0.1, 0.2, 0.3, 0.2, 0.1, 0.1]) # losowanie 1000 liczb z rozkładu opisanego przez p
print(X)
[3 3 3 4 5 4 5 3 4 6 2 4 4 3 2 2 6 1 3 4 3 1 5 6 1 3 6 4 3 4 3 5 3 4 3 1 4
 1 4 1 5 5 3 4 2 4 6 3 3 1 2 3 3 3 1 4 3 6 3 4 3 6 5 5 4 2 5 3 3 2 5 4 5 3
 1 3 1 3 4 2 5 1 3 2 3 4 2 2 3 4 3 3 3 3 2 5 5 2 2 2 1 2 4 6 4 6 5 2 2 2 3
 4 1 5 4 2 3 3 6 3 3 3 3 3 3 2 3 6 3 2 5 4 4 4 4 4 3 6 4 3 3 4 4 4 2 3 4 6
 4 3 2 3 2 3 6 2 4 4 6 2 6 4 4 3 5 5 3 5 1 4 5 3 5 4 3 5 3 4 3 3 3 2 3 3 6
 4 6 1 3 4 4 3 4 4 3 3 4 3 6 2 6 3 1 1 1 3 5 6 5 2 5 2 2 2 1 2 5 4 5 3 3 3
 2 4 3 1 2 6 3 6 3 4 4 3 3 4 3 2 4 4 5 5 1 3 3 2 2 3 3 4 2 2 3 2 4 5 6 1 4
 2 4 6 3 2 3 3 1 4 2 3 3 5 3 2 1 2 5 2 2 5 5 3 3 4 2 4 3 4 5 3 2 5 2 2 1 2
 2 5 3 3 4 3 2 2 5 1 4 1 4 2 6 3 3 4 6 1 3 3 3 1 2 4 4 2 3 4 4 3 1 6 3 3 4
 5 3 6 1 6 1 2 2 4 1 4 2 3 1 2 5 3 4 2 2 2 3 5 2 2 2 1 3 3 1 6 3 1 3 3 4 3
 1 3 3 2 2 6 3 4 2 2 4 4 1 3 4 3 3 4 4 1 4 3 4 3 2 2 1 4 3 2 3 3 6 1 4 3 3
 6 4 6 6 4 3 5 2 3 3 3 2 4 2 4 6 3 3 3 4 5 2 6 3 3 4 2 2 2 2 3 6 2 2 2 1 5
 6 1 4 3 3 3 1 2 2 1 3 3 6 3 2 3 2 2 2 6 2 5 2 2 4 1 6 2 3 4 3 2 1 2 4 6 5
 2 4 4 1 2 5 2 3 2 4 3 6 2 2 1 3 2 1 5 5 2 6 1 3 3 4 5 4 4 4 6 5 5 3 6 4 4
 1 3 6 6 6 2 2 5 2 4 1 2 2 3 2 2 5 3 2 4 5 3 6 6 4 4 1 3 3 4 3 5 5 5 3 6 6
 5 3 5 1 5 2 4 2 3 2 3 2 3 4 2 2 5 3 5 3 5 6 3 3 2 4 1 3 3 3 2 3 3 4 3 2 1
 4 2 4 4 2 4 3 4 6 1 3 1 2 2 3 2 3 2 3 3 6 4 3 2 2 2 6 4 3 4 3 2 2 1 3 5 3
 6 4 4 1 2 3 2 3 4 5 2 5 2 3 4 6 3 4 2 1 6 5 3 5 3 6 1 5 1 5 5 5 2 3 3 3 2
 2 2 3 3 3 4 5 3 5 5 3 2 2 4 3 3 3 2 3 6 3 5 2 2 3 5 5 2 5 4 3 3 1 2 6 1 1
 1 2 2 4 2 3 4 3 3 3 3 3 1 6 4 5 3 1 5 1 5 6 3 3 3 2 5 3 2 3 1 2 5 6 3 6 6
 5 4 3 5 5 4 2 3 2 2 4 4 2 6 4 3 5 2 5 1 3 2 5 2 3 5 4 2 6 2 6 2 3 1 6 4 3
 5 3 6 3 1 2 3 4 1 2 6 4 1 4 2 4 1 2 2 2 2 4 3 3 3 5 4 3 4 2 1 1 3 5 5 2 4
 4 2 2 1 5 5 2 6 4 3 1 5 4 4 4 1 5 1 6 3 5 1 3 2 5 1 3 3 6 1 3 1 4 1 4 3 5
 4 2 3 1 4 6 2 3 4 3 2 4 1 5 1 4 3 4 3 2 3 5 4 4 3 2 5 6 3 5 5 1 2 3 3 6 1
 4 2 4 5 5 3 6 2 3 4 3 2 4 2 1 2 3 4 2 3 6 2 2 1 5 3 2 4 5 1 6 2 4 5 3 6 3
 3 3 3 4 3 4 3 1 3 5 6 2 3 6 3 2 1 1 3 2 3 3 4 4 3 6 3 1 3 4 1 4 3 2 1 3 3
 3 2 4 2 1 3 3 2 3 6 4 4 4 3 5 2 6 2 3 2 4 1 2 3 6 3 4 2 6 3 4 6 4 2 5 3 3
 2]
In [58]:
plt.hist(X, bins=6)
plt.show()
In [59]:
X = np.random.normal(1, 3, 10000) # rozkład normalny o średniej 1 i odchyleniu standardowym 3
plt.hist(X, bins=200)
plt.show()
In [60]:
X = np.random.uniform(2, 4, 10000) # rozkład jednostajny na odcinku [2, 4).
plt.hist(X, bins=20)
plt.show()

Wektoryzacja¶

In [61]:
X = np.linspace(-2*np.pi, 2*np.pi, 1000)
# print(np.sin(X))
print(np.exp(X))
[  0.00187   0.00189   0.00192   0.00194   0.00196   0.00199   0.00201
   0.00204   0.00207   0.00209   0.00212   0.00214   0.00217   0.0022
   0.00223   0.00226   0.00228   0.00231   0.00234   0.00237   0.0024
   0.00243   0.00246   0.00249   0.00253   0.00256   0.00259   0.00262
   0.00266   0.00269   0.00272   0.00276   0.00279   0.00283   0.00286
   0.0029    0.00294   0.00297   0.00301   0.00305   0.00309   0.00313
   0.00317   0.00321   0.00325   0.00329   0.00333   0.00337   0.00342
   0.00346   0.0035    0.00355   0.00359   0.00364   0.00368   0.00373
   0.00378   0.00383   0.00387   0.00392   0.00397   0.00402   0.00407
   0.00412   0.00418   0.00423   0.00428   0.00434   0.00439   0.00445
   0.0045    0.00456   0.00462   0.00468   0.00474   0.0048    0.00486
   0.00492   0.00498   0.00504   0.00511   0.00517   0.00524   0.0053
   0.00537   0.00544   0.00551   0.00558   0.00565   0.00572   0.00579
   0.00587   0.00594   0.00602   0.00609   0.00617   0.00625   0.00633
   0.00641   0.00649   0.00657   0.00665   0.00674   0.00682   0.00691
   0.007     0.00708   0.00717   0.00727   0.00736   0.00745   0.00754
   0.00764   0.00774   0.00783   0.00793   0.00803   0.00814   0.00824
   0.00834   0.00845   0.00856   0.00866   0.00877   0.00888   0.009
   0.00911   0.00923   0.00934   0.00946   0.00958   0.0097    0.00983
   0.00995   0.01008   0.0102    0.01033   0.01046   0.0106    0.01073
   0.01087   0.011     0.01114   0.01128   0.01143   0.01157   0.01172
   0.01187   0.01202   0.01217   0.01232   0.01248   0.01264   0.0128
   0.01296   0.01312   0.01329   0.01346   0.01363   0.0138    0.01397
   0.01415   0.01433   0.01451   0.0147    0.01488   0.01507   0.01526
   0.01545   0.01565   0.01585   0.01605   0.01625   0.01646   0.01666
   0.01688   0.01709   0.01731   0.01752   0.01775   0.01797   0.0182
   0.01843   0.01866   0.0189    0.01914   0.01938   0.01963   0.01987
   0.02013   0.02038   0.02064   0.0209    0.02116   0.02143   0.0217
   0.02198   0.02226   0.02254   0.02282   0.02311   0.0234    0.0237
   0.024     0.0243    0.02461   0.02492   0.02524   0.02556   0.02588
   0.02621   0.02654   0.02688   0.02722   0.02756   0.02791   0.02826
   0.02862   0.02899   0.02935   0.02972   0.0301    0.03048   0.03087
   0.03126   0.03165   0.03205   0.03246   0.03287   0.03329   0.03371
   0.03413   0.03457   0.035     0.03545   0.0359    0.03635   0.03681
   0.03728   0.03775   0.03823   0.03871   0.0392    0.0397    0.0402
   0.04071   0.04122   0.04174   0.04227   0.04281   0.04335   0.0439
   0.04445   0.04502   0.04559   0.04616   0.04675   0.04734   0.04794
   0.04855   0.04916   0.04978   0.05041   0.05105   0.0517    0.05235
   0.05301   0.05369   0.05437   0.05505   0.05575   0.05646   0.05717
   0.05789   0.05863   0.05937   0.06012   0.06088   0.06165   0.06243
   0.06322   0.06402   0.06483   0.06565   0.06649   0.06733   0.06818
   0.06904   0.06992   0.0708    0.0717    0.07261   0.07352   0.07446
   0.0754    0.07635   0.07732   0.0783    0.07929   0.08029   0.08131
   0.08234   0.08338   0.08444   0.0855    0.08659   0.08768   0.08879
   0.08992   0.09106   0.09221   0.09337   0.09456   0.09575   0.09697
   0.09819   0.09944   0.1007    0.10197   0.10326   0.10457   0.10589
   0.10723   0.10859   0.10996   0.11136   0.11277   0.11419   0.11564
   0.1171    0.11858   0.12009   0.12161   0.12314   0.1247    0.12628
   0.12788   0.1295    0.13114   0.1328    0.13448   0.13618   0.13791
   0.13965   0.14142   0.14321   0.14502   0.14686   0.14872   0.1506
   0.15251   0.15444   0.15639   0.15837   0.16038   0.16241   0.16446
   0.16654   0.16865   0.17079   0.17295   0.17514   0.17735   0.1796
   0.18187   0.18418   0.18651   0.18887   0.19126   0.19368   0.19613
   0.19861   0.20113   0.20367   0.20625   0.20886   0.21151   0.21418
   0.21689   0.21964   0.22242   0.22524   0.22809   0.23097   0.2339
   0.23686   0.23986   0.24289   0.24597   0.24908   0.25223   0.25543
   0.25866   0.26194   0.26525   0.26861   0.27201   0.27545   0.27894
   0.28247   0.28605   0.28967   0.29333   0.29705   0.30081   0.30461
   0.30847   0.31237   0.31633   0.32033   0.32439   0.32849   0.33265
   0.33686   0.34113   0.34545   0.34982   0.35425   0.35873   0.36327
   0.36787   0.37253   0.37724   0.38202   0.38685   0.39175   0.39671
   0.40173   0.40682   0.41197   0.41718   0.42246   0.42781   0.43322
   0.43871   0.44426   0.44988   0.45558   0.46135   0.46719   0.4731
   0.47909   0.48515   0.49129   0.49751   0.50381   0.51019   0.51665
   0.52319   0.52981   0.53652   0.54331   0.55019   0.55715   0.5642
   0.57134   0.57858   0.5859    0.59332   0.60083   0.60843   0.61613
   0.62393   0.63183   0.63983   0.64793   0.65613   0.66444   0.67285
   0.68136   0.68999   0.69872   0.70757   0.71652   0.7256    0.73478
   0.74408   0.7535    0.76304   0.7727    0.78248   0.79238   0.80241
   0.81257   0.82286   0.83327   0.84382   0.8545    0.86532   0.87627
   0.88736   0.8986    0.90997   0.92149   0.93315   0.94497   0.95693
   0.96904   0.98131   0.99373   1.00631   1.01905   1.03195   1.04501
   1.05824   1.07163   1.0852    1.09894   1.11285   1.12693   1.1412
   1.15564   1.17027   1.18509   1.20009   1.21528   1.23066   1.24624
   1.26202   1.27799   1.29417   1.31055   1.32714   1.34394   1.36095
   1.37818   1.39562   1.41329   1.43118   1.4493    1.46764   1.48622
   1.50503   1.52409   1.54338   1.56292   1.5827    1.60273   1.62302
   1.64357   1.66437   1.68544   1.70677   1.72838   1.75026   1.77241
   1.79485   1.81757   1.84058   1.86388   1.88747   1.91136   1.93556
   1.96006   1.98487   2.00999   2.03544   2.0612    2.08729   2.11372
   2.14047   2.16757   2.19501   2.22279   2.25093   2.27942   2.30827
   2.33749   2.36708   2.39705   2.42739   2.45812   2.48923   2.52074
   2.55265   2.58496   2.61768   2.65082   2.68437   2.71835   2.75276
   2.78761   2.8229    2.85863   2.89482   2.93146   2.96857   3.00614
   3.0442    3.08273   3.12175   3.16127   3.20129   3.24181   3.28285
   3.3244    3.36648   3.4091    3.45225   3.49595   3.5402    3.58502
   3.6304    3.67635   3.72289   3.77002   3.81774   3.86606   3.915
   3.96456   4.01475   4.06557   4.11703   4.16914   4.22192   4.27536
   4.32948   4.38429   4.43978   4.49598   4.5529    4.61053   4.66889
   4.72799   4.78784   4.84845   4.90982   4.97197   5.03491   5.09864
   5.16318   5.22854   5.29472   5.36175   5.42962   5.49835   5.56795
   5.63843   5.7098    5.78208   5.85527   5.92939   6.00445   6.08045
   6.15742   6.23537   6.3143    6.39422   6.47516   6.55713   6.64013
   6.72419   6.8093    6.8955    6.98278   7.07117   7.16068   7.25133
   7.34312   7.43607   7.5302    7.62552   7.72205   7.81979   7.91878
   8.01902   8.12053   8.22332   8.32741   8.43283   8.53957   8.64767
   8.75714   8.86799   8.98024   9.09392   9.20903   9.3256    9.44365
   9.56319   9.68425   9.80683   9.93097  10.05668  10.18398  10.3129
  10.44344  10.57564  10.70951  10.84507  10.98235  11.12137  11.26215
  11.40471  11.54908  11.69527  11.84332  11.99323  12.14505  12.29878
  12.45447  12.61212  12.77177  12.93344  13.09716  13.26295  13.43083
  13.60085  13.77301  13.94736  14.12391  14.30269  14.48374  14.66708
  14.85274  15.04076  15.23115  15.42395  15.61919  15.81691  16.01712
  16.21987  16.42519  16.63311  16.84366  17.05687  17.27278  17.49143
  17.71284  17.93706  18.16411  18.39404  18.62688  18.86267  19.10144
  19.34323  19.58809  19.83604  20.08713  20.3414   20.59889  20.85964
  21.12369  21.39108  21.66186  21.93607  22.21374  22.49493  22.77968
  23.06804  23.36004  23.65574  23.95518  24.25842  24.56549  24.87645
  25.19135  25.51023  25.83315  26.16015  26.4913   26.82664  27.16622
  27.5101   27.85833  28.21098  28.56808  28.92971  29.29591  29.66675
  30.04228  30.42257  30.80767  31.19765  31.59256  31.99247  32.39744
  32.80754  33.22284  33.64338  34.06925  34.50052  34.93724  35.37949
  35.82734  36.28085  36.74011  37.20518  37.67614  38.15306  38.63601
  39.12508  39.62034  40.12188  40.62975  41.14406  41.66488  42.19229
  42.72638  43.26722  43.81492  44.36954  44.93119  45.49995  46.0759
  46.65915  47.24978  47.84789  48.45357  49.06691  49.68802  50.31699
  50.95392  51.59892  52.25208  52.9135   53.5833   54.26158  54.94845
  55.64401  56.34837  57.06165  57.78396  58.51541  59.25612  60.00621
  60.76579  61.53499  62.31393  63.10272  63.9015   64.71039  65.52952
  66.35902  67.19902  68.04965  68.91105  69.78335  70.6667   71.56122
  72.46708  73.38439  74.31332  75.25401  76.2066   77.17126  78.14812
  79.13735  80.1391   81.15354  82.18081  83.22109  84.27453  85.34131
  86.4216   87.51556  88.62336  89.74519  90.88122  92.03163  93.19661
  94.37633  95.57098  96.78076  98.00584  99.24644 100.50274 101.77495
 103.06325 104.36787 105.689   107.02685 108.38164 109.75358 111.14288
 112.54977 113.97447 115.41721 116.87821 118.3577  119.85591 121.3731
 122.90949 124.46532 126.04086 127.63633 129.252   130.88813 132.54496
 134.22277 135.92181 137.64236 139.3847  141.14908 142.9358  144.74514
 146.57738 148.43282 150.31174 152.21445 154.14124 156.09242 158.0683
 160.06919 162.09541 164.14728 166.22512 168.32926 170.46004 172.61779
 174.80285 177.01558 179.25631 181.52541 183.82323 186.15014 188.5065
 190.89269 193.30909 195.75607 198.23403 200.74335 203.28444 205.8577
 208.46353 211.10234 213.77456 216.4806  219.2209  221.99588 224.806
 227.65168 230.53338 233.45157 236.40669 239.39922 242.42963 245.4984
 248.60602 251.75297 254.93976 258.16689 261.43487 264.74421 268.09545
 271.48911 274.92573 278.40585 281.93002 285.4988  289.11276 292.77246
 296.47849 300.23143 304.03188 307.88044 311.77771 315.72432 319.72088
 323.76804 327.86642 332.01669 336.21948 340.47548 344.78536 349.14979
 353.56946 358.04509 362.57736 367.16701 371.81476 376.52134 381.28749
 386.11398 391.00157 395.95102 400.96313 406.03868 411.17848 416.38334
 421.65408 426.99155 432.39657 437.87002 443.41276 449.02565 454.7096
 460.46549 466.29425 472.19678 478.17404 484.22695 490.35649 496.56362
 502.84932 509.21458 515.66043 522.18786 528.79792 535.49166]
In [62]:
import math
In [63]:
# print(math.sin(X)) # błąd!
# print(math.exp(X)) # błąd!
In [64]:
def f(x):
    if x < 0:
        return 78
    elif x % 2 == 1:
        return -1
    else:
        return 20
In [65]:
X = np.arange(-10, 11)
print(X)
[-10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7
   8   9  10]
In [66]:
# f(X) # błąd!
In [67]:
# I. sposób
f1 = np.vectorize(f)
print(f1(X))
[78 78 78 78 78 78 78 78 78 78 20 -1 20 -1 20 -1 20 -1 20 -1 20]
In [68]:
# II. sposób (oznacza dokładnie to samo)

@np.vectorize
def f1(x):
    if x < 0:
        return 78
    elif x % 2 == 1:
        return -1
    else:
        return 20
In [69]:
print(f1(X))
[78 78 78 78 78 78 78 78 78 78 20 -1 20 -1 20 -1 20 -1 20 -1 20]

numpy a matplotlib¶

In [70]:
X = np.linspace(-2*np.pi, 2*np.pi, 1000)
plt.plot(X, np.sin(X))
plt.show()
In [71]:
T = np.arange(0, 2.5, 0.1)
y1 = np.sin(np.pi*T)
y2 = np.sin(np.pi*T + np.pi/2)
y3 = np.sin(np.pi*T - np.pi/2)
In [72]:
plt.plot(T, y1, 'b--', T, y2, 'g', T, y3, 'r-')
plt.show()
In [73]:
plt.plot(T, np.sin(T**2))
plt.xlabel('T')
plt.ylabel('$\sin(T^2)$') # wyrażenie LaTeXa na osi OY.
plt.show()