{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "MonTGYfCIDu_" }, "source": [ "# Powtórka podstawowych rachunków wektorowych i macierzowych w Pythonie\n", "Autor: Jarosław Żygierewicz\n", "## Działania na tablicach `numpy`\n", "Do działań na wektorach i macierzach użyjemy modułu `numpy`. Zaimportujmy go:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": {}, "colab_type": "code", "id": "P2y_kbTMIDvD" }, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "9ETUL_EPIDvN" }, "source": [ "Natywnym typem zmiennych w `numpy` są tablice, czyli `array`.\n", "\n", "Można je zadeklarować zarówno przez podanie listy własnych liczb, albo użyć metod generujących tablice z samymi zerami, jedynkami lub liczbami losowymi ze ustandardyzowanego rozkładu normalnego N(0,1).\n", "Użyj dokumentacji pakietu numpy by stworzyć następujące tablice i wektory:\n", "\n", "$$\n", "\\begin{array}{lcr}\n", "\\vec{v} = [0, 1,2,3,4,5,6,7,8,9] \\\\\n", "\\vec{v}_{0} = [0,0,...] \\\\\n", "\\vec{v}_{1} = [1,1,...] \\\\\n", "\\vec{v}_{rand} = [\\mbox{losowa},\\mbox{losowa}, ...]\n", "\\end{array}\n", "$$\n", "Wektory $\\vec{v}_{0}, \\vec{v}_{1}$ i $\\vec{v}_{rand}$ stwórz używając dedykowanych funkcji. Wymiar wektora zakoduj jako zmienną." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Vector of natural numbers: [0 1 2 3 4 5 6 7 8 9]\n", "Vector of zeros: [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n", "Vector of ones: [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]\n", "Vector of randoms: [-0.33620134 -1.47338168 0.99016139 0.36752493 -0.25271117 1.5958063\n", " -0.36225101 -0.74846547 -0.16474308 1.23843253]\n" ] } ], "source": [ "v = np.array([0,1,2,3,4,5,6,7,8,9])\n", "\n", "vec_dim = 10\n", "\n", "v0 = np.zeros(vec_dim) \n", "v1 = np.ones(vec_dim)\n", "vrand = np.random.randn(vec_dim)\n", "\n", "print(\"Vector of natural numbers: {}\".format(v))\n", "print(\"Vector of zeros: {}\".format(v0))\n", "print(\"Vector of ones: {}\".format(v1))\n", "print(\"Vector of randoms: {}\".format(vrand))" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "3aTrIrsIPzE-" }, "source": [ "Konkretny kształt (wymiarowość) możemy im nadać zarówno w momencie deklaracji, jak i po. Kształt jest przechowywany w polu `shape`, do zmiany kształtu służy metoda `reshape`. Liczbę elementów można sprawdzić metodą `size` lub funkcją `len`.\n", "\n", "
\n",
"x = np.full_like(shape=(4), np.sqrt(2)).reshape(4,1)\n",
"
\n",
" \n",
"print(np.dot(x.T,x))\n",
"
\n",
" \n",
"print(np.dot(x,x.T)) \n",
"
\n",
" \n",
"B = np.dot(x,x.T)\n",
"print(np.linalg.inv(B)) \n",
"
\n",
" \n",
"B = np.dot(x,x.T)\n",
"B += np.identity(B.shape[0]) \n",
"print(np.linalg.inv(B)) \n",
"
\n",
"