{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Numpy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Biblioteka szeroko wykorzystywana do wykonywania obliczeń numerycznych." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Przykłady użycia" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rozróżnienie między standardową listą a listą oferowaną przez bibliotekę numpy:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "array([1, 2, 3, 4, 5, 6])" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "x = [1, 2, 3, 4, 5, 6]\n", "v = np.array(x)\n", "v" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Przykład listy 2d, czyli macierzy:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "array([[1, 2],\n", " [3, 4]])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M = np.array([[1,2], [3,4]])\n", "M" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "(numpy.ndarray, numpy.ndarray)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(v), type(M)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sprawdzenie wymiarów listy/macierzy:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "(6,)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v.shape" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "(2, 2)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M.shape" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M.size" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Typ danych w macierzy:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "dtype('int32')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M.dtype" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Generowanie liczb losowych (w formie macierzy):" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "array([[0.63192923, 0.22871818, 0.20419286],\n", " [0.34031846, 0.04599285, 0.88050769],\n", " [0.73609973, 0.28774613, 0.03776619],\n", " [0.11970277, 0.6832553 , 0.24433463],\n", " [0.59528399, 0.7780661 , 0.86815752]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.rand(5,3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Macierz zer:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "array([[0., 0., 0.],\n", " [0., 0., 0.],\n", " [0., 0., 0.],\n", " [0., 0., 0.],\n", " [0., 0., 0.]])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.zeros([5,3])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Operacje na macierzach:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1 1 1]\n", " [2 2 2]]\n", "[[1 2 3]\n", " [4 5 6]]\n" ] } ], "source": [ "M = np.array([[1,2,3], [4,5,6]])\n", "N = np.array([[1,1,1], [2,2,2]])\n", "print(N)\n", "print(M)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dodawanie:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "array([[2, 3, 4],\n", " [6, 7, 8]])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M + N" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mnożenie przez skalar:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "array([[ 5, 10, 15],\n", " [20, 25, 30]])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "5*M" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mnozenie odpowiadającyh sobie kolejnych komórek macierzy:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "data": { "text/plain": [ "array([[ 1, 2, 3],\n", " [ 8, 10, 12]])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "M*N" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Iloczyn macierzowy:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "ename": "ValueError", "evalue": "shapes (2,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0)", "output_type": "error", "traceback": [ "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[0;32m 1\u001B[0m \u001B[1;31m# dlaczego nie działa?\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m----> 2\u001B[1;33m \u001B[0mM\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdot\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mN\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", "\u001B[1;31mValueError\u001B[0m: shapes (2,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0)" ] } ], "source": [ "# dlaczego nie działa?\n", "M.dot(N)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Transpozycja + iloczyn macierzowy:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "M.dot(N.T)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Generowanie liczb z zakresu z krokiem (przydatne do wykresów):" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "v = np.arange(0, 10.01, 0.5)\n", "print(v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Generowanie (100) liczb z zakresu (przydatne do wykresów):" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "# Generowanie rownych odstepow\n", "v = np.linspace(0,10,100)\n", "v" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wbudowane funkcje przyjmują macierze jako argumenty:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "np.sin(v)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Przykład zwięzłego wygenerowania sinusa:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "plt.plot(v, np.sin(v))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Czytanie (krojenie) macierzy:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "M = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]])\n", "M" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Wszystkie wiersze razy druga (trzecia) kolumna:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "M[:,2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Drugi (trzeci) wiersz razy kolumny z przedziału 1:3 :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "M[2,1:3]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "M[1:3,2:4]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "M[::2,:]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "M" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Można nadpisywać podczas czytania:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "M[::2,::2]=0\n", "M\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 4 }