import numpy as np

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

x.shape

"""
Explanation: 1.1 NumPy - Tablice
Wprowadzenie
Głównym obiektem w NumPy jest jednorodna, wielowymiarowa tablica. Przykładem takiej tablicy jest macierz x.
Macierz $x =
    \begin{pmatrix}
    1 & 2 & 3  \
    4 & 5 & 6  \
    7 & 8 & 9
    \end{pmatrix}$
można zapisać jako:
End of explanation
"""


x.sum(axis=0)

x.sum(axis=1)

x.mean(axis=0)

x.mean(axis=1)

"""
Explanation: Tablice typu array mają wiele przydatnych wbudowanych metod.
End of explanation
"""


np.arange(10)

np.arange(5,10)

np.arange(5,10,0.5)

"""
Explanation: Do tworzenia sekwencji liczbowych jako obiekty typu array należy wykorzystać funkcję arange.
End of explanation
"""


x = np.arange(1,10).reshape(3,3)
x

"""
Explanation: Możemy również zmieniać kształt (reshape) wyjścia funkcji arange.
End of explanation
"""


x = np.linspace(0,5,5)
x

"""
Explanation: Podobną funkcją do arange jest linspace która wypełnia wektor określoną liczbą elementów z przedziału o równych automatycznie obliczonych odstępach (w arange sami musimy podać rozmiar kroku.)
End of explanation
"""


help(np.linspace)

"""
Explanation: Tak jak w przypadku wszystkich funkcji pythonowych możemy uzyskać dodatkowe informacje o funkcjach NumPy za pomocą polecenia help(nazwa.funkcji):
End of explanation
"""


x = np.array([1,2,3])
print x.dtype
x = np.array([0.1,0.2,0.3])
print x
print x.dtype
x = np.array([1,2,3],dtype='float64')
print x.dtype

"""
Explanation: Tablice mogą sie składać z różnych typów danych (ale tylko jednego typu danych równocześnie, stąd jednorodność).
End of explanation
"""


x = np.zeros([3,4])
x

x = np.ones([3,4])
x

"""
Explanation: Kilka przydatnych funkcji do tworzenia określonych tablic:
* zeros
* ones
End of explanation
"""


