├── NumPy Tutorial.ipynb ├── README.md └── data.txt /NumPy Tutorial.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### Load in NumPy (remember to pip install numpy first)" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import numpy as np" 17 | ] 18 | }, 19 | { 20 | "cell_type": "markdown", 21 | "metadata": {}, 22 | "source": [ 23 | "### The Basics" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 24, 29 | "metadata": {}, 30 | "outputs": [ 31 | { 32 | "name": "stdout", 33 | "output_type": "stream", 34 | "text": [ 35 | "[1 2 3]\n" 36 | ] 37 | } 38 | ], 39 | "source": [ 40 | "a = np.array([1,2,3], dtype='int32')\n", 41 | "print(a)" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 10, 47 | "metadata": {}, 48 | "outputs": [ 49 | { 50 | "name": "stdout", 51 | "output_type": "stream", 52 | "text": [ 53 | "[[9. 8. 7.]\n", 54 | " [6. 5. 4.]]\n" 55 | ] 56 | } 57 | ], 58 | "source": [ 59 | "b = np.array([[9.0,8.0,7.0],[6.0,5.0,4.0]])\n", 60 | "print(b)" 61 | ] 62 | }, 63 | { 64 | "cell_type": "code", 65 | "execution_count": 16, 66 | "metadata": {}, 67 | "outputs": [ 68 | { 69 | "data": { 70 | "text/plain": [ 71 | "1" 72 | ] 73 | }, 74 | "execution_count": 16, 75 | "metadata": {}, 76 | "output_type": "execute_result" 77 | } 78 | ], 79 | "source": [ 80 | "# Get Dimension\n", 81 | "a.ndim" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": 18, 87 | "metadata": {}, 88 | "outputs": [ 89 | { 90 | "data": { 91 | "text/plain": [ 92 | "(2, 3)" 93 | ] 94 | }, 95 | "execution_count": 18, 96 | "metadata": {}, 97 | "output_type": "execute_result" 98 | } 99 | ], 100 | "source": [ 101 | "# Get Shape\n", 102 | "b.shape" 103 | ] 104 | }, 105 | { 106 | "cell_type": "code", 107 | "execution_count": 32, 108 | "metadata": {}, 109 | "outputs": [ 110 | { 111 | "data": { 112 | "text/plain": [ 113 | "dtype('int32')" 114 | ] 115 | }, 116 | "execution_count": 32, 117 | "metadata": {}, 118 | "output_type": "execute_result" 119 | } 120 | ], 121 | "source": [ 122 | "# Get Type\n", 123 | "a.dtype" 124 | ] 125 | }, 126 | { 127 | "cell_type": "code", 128 | "execution_count": 31, 129 | "metadata": {}, 130 | "outputs": [ 131 | { 132 | "data": { 133 | "text/plain": [ 134 | "4" 135 | ] 136 | }, 137 | "execution_count": 31, 138 | "metadata": {}, 139 | "output_type": "execute_result" 140 | } 141 | ], 142 | "source": [ 143 | "# Get Size\n", 144 | "a.itemsize" 145 | ] 146 | }, 147 | { 148 | "cell_type": "code", 149 | "execution_count": 29, 150 | "metadata": {}, 151 | "outputs": [ 152 | { 153 | "data": { 154 | "text/plain": [ 155 | "12" 156 | ] 157 | }, 158 | "execution_count": 29, 159 | "metadata": {}, 160 | "output_type": "execute_result" 161 | } 162 | ], 163 | "source": [ 164 | "# Get total size\n", 165 | "a.nbytes" 166 | ] 167 | }, 168 | { 169 | "cell_type": "code", 170 | "execution_count": 35, 171 | "metadata": {}, 172 | "outputs": [ 173 | { 174 | "data": { 175 | "text/plain": [ 176 | "3" 177 | ] 178 | }, 179 | "execution_count": 35, 180 | "metadata": {}, 181 | "output_type": "execute_result" 182 | } 183 | ], 184 | "source": [ 185 | "# Get number of elements\n", 186 | "a.size" 187 | ] 188 | }, 189 | { 190 | "cell_type": "markdown", 191 | "metadata": {}, 192 | "source": [ 193 | "### Accessing/Changing specific elements, rows, columns, etc" 194 | ] 195 | }, 196 | { 197 | "cell_type": "code", 198 | "execution_count": 45, 199 | "metadata": {}, 200 | "outputs": [ 201 | { 202 | "name": "stdout", 203 | "output_type": "stream", 204 | "text": [ 205 | "[[ 1 2 3 4 5 6 7]\n", 206 | " [ 8 9 10 11 12 13 14]]\n" 207 | ] 208 | } 209 | ], 210 | "source": [ 211 | "a = np.array([[1,2,3,4,5,6,7],[8,9,10,11,12,13,14]])\n", 212 | "print(a)" 213 | ] 214 | }, 215 | { 216 | "cell_type": "code", 217 | "execution_count": 14, 218 | "metadata": {}, 219 | "outputs": [ 220 | { 221 | "data": { 222 | "text/plain": [ 223 | "13" 224 | ] 225 | }, 226 | "execution_count": 14, 227 | "metadata": {}, 228 | "output_type": "execute_result" 229 | } 230 | ], 231 | "source": [ 232 | "# Get a specific element [r, c]\n", 233 | "a[1, 5]" 234 | ] 235 | }, 236 | { 237 | "cell_type": "code", 238 | "execution_count": 15, 239 | "metadata": {}, 240 | "outputs": [ 241 | { 242 | "data": { 243 | "text/plain": [ 244 | "array([1, 2, 3, 4, 5, 6, 7])" 245 | ] 246 | }, 247 | "execution_count": 15, 248 | "metadata": {}, 249 | "output_type": "execute_result" 250 | } 251 | ], 252 | "source": [ 253 | "# Get a specific row \n", 254 | "a[0, :]" 255 | ] 256 | }, 257 | { 258 | "cell_type": "code", 259 | "execution_count": 16, 260 | "metadata": {}, 261 | "outputs": [ 262 | { 263 | "data": { 264 | "text/plain": [ 265 | "array([ 3, 10])" 266 | ] 267 | }, 268 | "execution_count": 16, 269 | "metadata": {}, 270 | "output_type": "execute_result" 271 | } 272 | ], 273 | "source": [ 274 | "# Get a specific column\n", 275 | "a[:, 2]" 276 | ] 277 | }, 278 | { 279 | "cell_type": "code", 280 | "execution_count": 20, 281 | "metadata": {}, 282 | "outputs": [ 283 | { 284 | "data": { 285 | "text/plain": [ 286 | "array([2, 4, 6])" 287 | ] 288 | }, 289 | "execution_count": 20, 290 | "metadata": {}, 291 | "output_type": "execute_result" 292 | } 293 | ], 294 | "source": [ 295 | "# Getting a little more fancy [startindex:endindex:stepsize]\n", 296 | "a[0, 1:-1:2]" 297 | ] 298 | }, 299 | { 300 | "cell_type": "code", 301 | "execution_count": 24, 302 | "metadata": {}, 303 | "outputs": [ 304 | { 305 | "name": "stdout", 306 | "output_type": "stream", 307 | "text": [ 308 | "[[ 1 2 5 4 5 6 7]\n", 309 | " [ 8 9 5 11 12 20 14]]\n", 310 | "[[ 1 2 1 4 5 6 7]\n", 311 | " [ 8 9 2 11 12 20 14]]\n" 312 | ] 313 | } 314 | ], 315 | "source": [ 316 | "a[1,5] = 20\n", 317 | "\n", 318 | "a[:,2] = [1,2]\n", 319 | "print(a)" 320 | ] 321 | }, 322 | { 323 | "cell_type": "markdown", 324 | "metadata": {}, 325 | "source": [ 326 | "*3-d example" 327 | ] 328 | }, 329 | { 330 | "cell_type": "code", 331 | "execution_count": 25, 332 | "metadata": {}, 333 | "outputs": [ 334 | { 335 | "name": "stdout", 336 | "output_type": "stream", 337 | "text": [ 338 | "[[[1 2]\n", 339 | " [3 4]]\n", 340 | "\n", 341 | " [[5 6]\n", 342 | " [7 8]]]\n" 343 | ] 344 | } 345 | ], 346 | "source": [ 347 | "b = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])\n", 348 | "print(b)" 349 | ] 350 | }, 351 | { 352 | "cell_type": "code", 353 | "execution_count": 30, 354 | "metadata": {}, 355 | "outputs": [ 356 | { 357 | "data": { 358 | "text/plain": [ 359 | "4" 360 | ] 361 | }, 362 | "execution_count": 30, 363 | "metadata": {}, 364 | "output_type": "execute_result" 365 | } 366 | ], 367 | "source": [ 368 | "# Get specific element (work outside in)\n", 369 | "b[0,1,1]" 370 | ] 371 | }, 372 | { 373 | "cell_type": "code", 374 | "execution_count": 34, 375 | "metadata": {}, 376 | "outputs": [ 377 | { 378 | "ename": "ValueError", 379 | "evalue": "setting an array element with a sequence.", 380 | "output_type": "error", 381 | "traceback": [ 382 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 383 | "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", 384 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# replace\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mb\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m9\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m9\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m9\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m8\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m8\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", 385 | "\u001b[1;31mValueError\u001b[0m: setting an array element with a sequence." 386 | ] 387 | } 388 | ], 389 | "source": [ 390 | "# replace \n", 391 | "b[:,1,:] = [[9,9,9],[8,8]]" 392 | ] 393 | }, 394 | { 395 | "cell_type": "code", 396 | "execution_count": 33, 397 | "metadata": {}, 398 | "outputs": [ 399 | { 400 | "data": { 401 | "text/plain": [ 402 | "array([[[1, 2],\n", 403 | " [9, 9]],\n", 404 | "\n", 405 | " [[5, 6],\n", 406 | " [8, 8]]])" 407 | ] 408 | }, 409 | "execution_count": 33, 410 | "metadata": {}, 411 | "output_type": "execute_result" 412 | } 413 | ], 414 | "source": [ 415 | "b" 416 | ] 417 | }, 418 | { 419 | "cell_type": "markdown", 420 | "metadata": {}, 421 | "source": [ 422 | "### Initializing Different Types of Arrays" 423 | ] 424 | }, 425 | { 426 | "cell_type": "code", 427 | "execution_count": 40, 428 | "metadata": {}, 429 | "outputs": [ 430 | { 431 | "data": { 432 | "text/plain": [ 433 | "array([[0., 0., 0.],\n", 434 | " [0., 0., 0.]])" 435 | ] 436 | }, 437 | "execution_count": 40, 438 | "metadata": {}, 439 | "output_type": "execute_result" 440 | } 441 | ], 442 | "source": [ 443 | "# All 0s matrix\n", 444 | "np.zeros((2,3))" 445 | ] 446 | }, 447 | { 448 | "cell_type": "code", 449 | "execution_count": 42, 450 | "metadata": {}, 451 | "outputs": [ 452 | { 453 | "data": { 454 | "text/plain": [ 455 | "array([[[1, 1],\n", 456 | " [1, 1]],\n", 457 | "\n", 458 | " [[1, 1],\n", 459 | " [1, 1]],\n", 460 | "\n", 461 | " [[1, 1],\n", 462 | " [1, 1]],\n", 463 | "\n", 464 | " [[1, 1],\n", 465 | " [1, 1]]])" 466 | ] 467 | }, 468 | "execution_count": 42, 469 | "metadata": {}, 470 | "output_type": "execute_result" 471 | } 472 | ], 473 | "source": [ 474 | "# All 1s matrix\n", 475 | "np.ones((4,2,2), dtype='int32')" 476 | ] 477 | }, 478 | { 479 | "cell_type": "code", 480 | "execution_count": 44, 481 | "metadata": {}, 482 | "outputs": [ 483 | { 484 | "data": { 485 | "text/plain": [ 486 | "array([[99., 99.],\n", 487 | " [99., 99.]], dtype=float32)" 488 | ] 489 | }, 490 | "execution_count": 44, 491 | "metadata": {}, 492 | "output_type": "execute_result" 493 | } 494 | ], 495 | "source": [ 496 | "# Any other number\n", 497 | "np.full((2,2), 99)" 498 | ] 499 | }, 500 | { 501 | "cell_type": "code", 502 | "execution_count": 49, 503 | "metadata": {}, 504 | "outputs": [ 505 | { 506 | "data": { 507 | "text/plain": [ 508 | "array([[4, 4, 4, 4, 4, 4, 4],\n", 509 | " [4, 4, 4, 4, 4, 4, 4]])" 510 | ] 511 | }, 512 | "execution_count": 49, 513 | "metadata": {}, 514 | "output_type": "execute_result" 515 | } 516 | ], 517 | "source": [ 518 | "# Any other number (full_like)\n", 519 | "np.full_like(a, 4)" 520 | ] 521 | }, 522 | { 523 | "cell_type": "code", 524 | "execution_count": 56, 525 | "metadata": {}, 526 | "outputs": [ 527 | { 528 | "data": { 529 | "text/plain": [ 530 | "array([[0.07805642, 0.53385716],\n", 531 | " [0.02494273, 0.99955252],\n", 532 | " [0.48588042, 0.91247437],\n", 533 | " [0.27779213, 0.16597751]])" 534 | ] 535 | }, 536 | "execution_count": 56, 537 | "metadata": {}, 538 | "output_type": "execute_result" 539 | } 540 | ], 541 | "source": [ 542 | "# Random decimal numbers\n", 543 | "np.random.rand(4,2)" 544 | ] 545 | }, 546 | { 547 | "cell_type": "code", 548 | "execution_count": 73, 549 | "metadata": {}, 550 | "outputs": [ 551 | { 552 | "data": { 553 | "text/plain": [ 554 | "array([[-2, -4, -4],\n", 555 | " [ 6, 6, 3],\n", 556 | " [ 3, 2, 2]])" 557 | ] 558 | }, 559 | "execution_count": 73, 560 | "metadata": {}, 561 | "output_type": "execute_result" 562 | } 563 | ], 564 | "source": [ 565 | "# Random Integer values\n", 566 | "np.random.randint(-4,8, size=(3,3))" 567 | ] 568 | }, 569 | { 570 | "cell_type": "code", 571 | "execution_count": 76, 572 | "metadata": {}, 573 | "outputs": [ 574 | { 575 | "data": { 576 | "text/plain": [ 577 | "array([[1., 0., 0., 0., 0.],\n", 578 | " [0., 1., 0., 0., 0.],\n", 579 | " [0., 0., 1., 0., 0.],\n", 580 | " [0., 0., 0., 1., 0.],\n", 581 | " [0., 0., 0., 0., 1.]])" 582 | ] 583 | }, 584 | "execution_count": 76, 585 | "metadata": {}, 586 | "output_type": "execute_result" 587 | } 588 | ], 589 | "source": [ 590 | "# The identity matrix\n", 591 | "np.identity(5)" 592 | ] 593 | }, 594 | { 595 | "cell_type": "code", 596 | "execution_count": 82, 597 | "metadata": {}, 598 | "outputs": [ 599 | { 600 | "name": "stdout", 601 | "output_type": "stream", 602 | "text": [ 603 | "[[1 2 3]\n", 604 | " [1 2 3]\n", 605 | " [1 2 3]]\n" 606 | ] 607 | } 608 | ], 609 | "source": [ 610 | "# Repeat an array\n", 611 | "arr = np.array([[1,2,3]])\n", 612 | "r1 = np.repeat(arr,3, axis=0)\n", 613 | "print(r1)" 614 | ] 615 | }, 616 | { 617 | "cell_type": "code", 618 | "execution_count": 89, 619 | "metadata": {}, 620 | "outputs": [ 621 | { 622 | "name": "stdout", 623 | "output_type": "stream", 624 | "text": [ 625 | "[[1. 1. 1. 1. 1.]\n", 626 | " [1. 1. 1. 1. 1.]\n", 627 | " [1. 1. 1. 1. 1.]\n", 628 | " [1. 1. 1. 1. 1.]\n", 629 | " [1. 1. 1. 1. 1.]]\n", 630 | "[[0. 0. 0.]\n", 631 | " [0. 9. 0.]\n", 632 | " [0. 0. 0.]]\n", 633 | "[[1. 1. 1. 1. 1.]\n", 634 | " [1. 0. 0. 0. 1.]\n", 635 | " [1. 0. 9. 0. 1.]\n", 636 | " [1. 0. 0. 0. 1.]\n", 637 | " [1. 1. 1. 1. 1.]]\n" 638 | ] 639 | } 640 | ], 641 | "source": [ 642 | "output = np.ones((5,5))\n", 643 | "print(output)\n", 644 | "\n", 645 | "z = np.zeros((3,3))\n", 646 | "z[1,1] = 9\n", 647 | "print(z)\n", 648 | "\n", 649 | "output[1:-1,1:-1] = z\n", 650 | "print(output)" 651 | ] 652 | }, 653 | { 654 | "cell_type": "markdown", 655 | "metadata": {}, 656 | "source": [ 657 | "##### Be careful when copying arrays!!!" 658 | ] 659 | }, 660 | { 661 | "cell_type": "code", 662 | "execution_count": 98, 663 | "metadata": {}, 664 | "outputs": [ 665 | { 666 | "name": "stdout", 667 | "output_type": "stream", 668 | "text": [ 669 | "[1 2 3]\n" 670 | ] 671 | } 672 | ], 673 | "source": [ 674 | "a = np.array([1,2,3])\n", 675 | "b = a.copy()\n", 676 | "b[0] = 100\n", 677 | "\n", 678 | "print(a)" 679 | ] 680 | }, 681 | { 682 | "cell_type": "markdown", 683 | "metadata": {}, 684 | "source": [ 685 | "### Mathematics" 686 | ] 687 | }, 688 | { 689 | "cell_type": "code", 690 | "execution_count": 111, 691 | "metadata": {}, 692 | "outputs": [ 693 | { 694 | "name": "stdout", 695 | "output_type": "stream", 696 | "text": [ 697 | "[1 2 3 4]\n" 698 | ] 699 | } 700 | ], 701 | "source": [ 702 | "a = np.array([1,2,3,4])\n", 703 | "print(a)" 704 | ] 705 | }, 706 | { 707 | "cell_type": "code", 708 | "execution_count": 109, 709 | "metadata": {}, 710 | "outputs": [ 711 | { 712 | "data": { 713 | "text/plain": [ 714 | "array([5, 6, 7, 8])" 715 | ] 716 | }, 717 | "execution_count": 109, 718 | "metadata": {}, 719 | "output_type": "execute_result" 720 | } 721 | ], 722 | "source": [ 723 | "a + 2" 724 | ] 725 | }, 726 | { 727 | "cell_type": "code", 728 | "execution_count": 102, 729 | "metadata": {}, 730 | "outputs": [ 731 | { 732 | "data": { 733 | "text/plain": [ 734 | "array([-1, 0, 1, 2])" 735 | ] 736 | }, 737 | "execution_count": 102, 738 | "metadata": {}, 739 | "output_type": "execute_result" 740 | } 741 | ], 742 | "source": [ 743 | "a - 2" 744 | ] 745 | }, 746 | { 747 | "cell_type": "code", 748 | "execution_count": 103, 749 | "metadata": {}, 750 | "outputs": [ 751 | { 752 | "data": { 753 | "text/plain": [ 754 | "array([2, 4, 6, 8])" 755 | ] 756 | }, 757 | "execution_count": 103, 758 | "metadata": {}, 759 | "output_type": "execute_result" 760 | } 761 | ], 762 | "source": [ 763 | "a * 2" 764 | ] 765 | }, 766 | { 767 | "cell_type": "code", 768 | "execution_count": 104, 769 | "metadata": {}, 770 | "outputs": [ 771 | { 772 | "data": { 773 | "text/plain": [ 774 | "array([0.5, 1. , 1.5, 2. ])" 775 | ] 776 | }, 777 | "execution_count": 104, 778 | "metadata": {}, 779 | "output_type": "execute_result" 780 | } 781 | ], 782 | "source": [ 783 | "a / 2" 784 | ] 785 | }, 786 | { 787 | "cell_type": "code", 788 | "execution_count": 118, 789 | "metadata": {}, 790 | "outputs": [ 791 | { 792 | "data": { 793 | "text/plain": [ 794 | "array([1, 0, 3, 0])" 795 | ] 796 | }, 797 | "execution_count": 118, 798 | "metadata": {}, 799 | "output_type": "execute_result" 800 | } 801 | ], 802 | "source": [ 803 | "b = np.array([1,0,1,0])\n", 804 | "a + b" 805 | ] 806 | }, 807 | { 808 | "cell_type": "code", 809 | "execution_count": 113, 810 | "metadata": {}, 811 | "outputs": [ 812 | { 813 | "data": { 814 | "text/plain": [ 815 | "array([ 1, 4, 9, 16], dtype=int32)" 816 | ] 817 | }, 818 | "execution_count": 113, 819 | "metadata": {}, 820 | "output_type": "execute_result" 821 | } 822 | ], 823 | "source": [ 824 | "a ** 2" 825 | ] 826 | }, 827 | { 828 | "cell_type": "code", 829 | "execution_count": 116, 830 | "metadata": {}, 831 | "outputs": [ 832 | { 833 | "data": { 834 | "text/plain": [ 835 | "array([ 0.54030231, -0.41614684, -0.9899925 , -0.65364362])" 836 | ] 837 | }, 838 | "execution_count": 116, 839 | "metadata": {}, 840 | "output_type": "execute_result" 841 | } 842 | ], 843 | "source": [ 844 | "# Take the sin\n", 845 | "np.cos(a)\n", 846 | "\n" 847 | ] 848 | }, 849 | { 850 | "cell_type": "code", 851 | "execution_count": 117, 852 | "metadata": {}, 853 | "outputs": [], 854 | "source": [ 855 | "# For a lot more (https://docs.scipy.org/doc/numpy/reference/routines.math.html)" 856 | ] 857 | }, 858 | { 859 | "cell_type": "markdown", 860 | "metadata": {}, 861 | "source": [ 862 | "##### Linear Algebra" 863 | ] 864 | }, 865 | { 866 | "cell_type": "code", 867 | "execution_count": 127, 868 | "metadata": {}, 869 | "outputs": [ 870 | { 871 | "name": "stdout", 872 | "output_type": "stream", 873 | "text": [ 874 | "[[1. 1. 1.]\n", 875 | " [1. 1. 1.]]\n", 876 | "[[2 2]\n", 877 | " [2 2]\n", 878 | " [2 2]]\n" 879 | ] 880 | }, 881 | { 882 | "data": { 883 | "text/plain": [ 884 | "array([[6., 6.],\n", 885 | " [6., 6.]])" 886 | ] 887 | }, 888 | "execution_count": 127, 889 | "metadata": {}, 890 | "output_type": "execute_result" 891 | } 892 | ], 893 | "source": [ 894 | "a = np.ones((2,3))\n", 895 | "print(a)\n", 896 | "\n", 897 | "b = np.full((3,2), 2)\n", 898 | "print(b)\n", 899 | "\n", 900 | "np.matmul(a,b)" 901 | ] 902 | }, 903 | { 904 | "cell_type": "code", 905 | "execution_count": 132, 906 | "metadata": {}, 907 | "outputs": [ 908 | { 909 | "data": { 910 | "text/plain": [ 911 | "1.0" 912 | ] 913 | }, 914 | "execution_count": 132, 915 | "metadata": {}, 916 | "output_type": "execute_result" 917 | } 918 | ], 919 | "source": [ 920 | "# Find the determinant\n", 921 | "c = np.identity(3)\n", 922 | "np.linalg.det(c)" 923 | ] 924 | }, 925 | { 926 | "cell_type": "code", 927 | "execution_count": 133, 928 | "metadata": {}, 929 | "outputs": [], 930 | "source": [ 931 | "## Reference docs (https://docs.scipy.org/doc/numpy/reference/routines.linalg.html)\n", 932 | "\n", 933 | "# Determinant\n", 934 | "# Trace\n", 935 | "# Singular Vector Decomposition\n", 936 | "# Eigenvalues\n", 937 | "# Matrix Norm\n", 938 | "# Inverse\n", 939 | "# Etc..." 940 | ] 941 | }, 942 | { 943 | "cell_type": "markdown", 944 | "metadata": {}, 945 | "source": [ 946 | "##### Statistics" 947 | ] 948 | }, 949 | { 950 | "cell_type": "code", 951 | "execution_count": 134, 952 | "metadata": {}, 953 | "outputs": [ 954 | { 955 | "data": { 956 | "text/plain": [ 957 | "array([[1, 2, 3],\n", 958 | " [4, 5, 6]])" 959 | ] 960 | }, 961 | "execution_count": 134, 962 | "metadata": {}, 963 | "output_type": "execute_result" 964 | } 965 | ], 966 | "source": [ 967 | "stats = np.array([[1,2,3],[4,5,6]])\n", 968 | "stats" 969 | ] 970 | }, 971 | { 972 | "cell_type": "code", 973 | "execution_count": 139, 974 | "metadata": {}, 975 | "outputs": [ 976 | { 977 | "data": { 978 | "text/plain": [ 979 | "1" 980 | ] 981 | }, 982 | "execution_count": 139, 983 | "metadata": {}, 984 | "output_type": "execute_result" 985 | } 986 | ], 987 | "source": [ 988 | "np.min(stats)" 989 | ] 990 | }, 991 | { 992 | "cell_type": "code", 993 | "execution_count": 141, 994 | "metadata": {}, 995 | "outputs": [ 996 | { 997 | "data": { 998 | "text/plain": [ 999 | "array([3, 6])" 1000 | ] 1001 | }, 1002 | "execution_count": 141, 1003 | "metadata": {}, 1004 | "output_type": "execute_result" 1005 | } 1006 | ], 1007 | "source": [ 1008 | "np.max(stats, axis=1)" 1009 | ] 1010 | }, 1011 | { 1012 | "cell_type": "code", 1013 | "execution_count": 143, 1014 | "metadata": {}, 1015 | "outputs": [ 1016 | { 1017 | "data": { 1018 | "text/plain": [ 1019 | "array([5, 7, 9])" 1020 | ] 1021 | }, 1022 | "execution_count": 143, 1023 | "metadata": {}, 1024 | "output_type": "execute_result" 1025 | } 1026 | ], 1027 | "source": [ 1028 | "np.sum(stats, axis=0)" 1029 | ] 1030 | }, 1031 | { 1032 | "cell_type": "markdown", 1033 | "metadata": {}, 1034 | "source": [ 1035 | "### Reorganizing Arrays" 1036 | ] 1037 | }, 1038 | { 1039 | "cell_type": "code", 1040 | "execution_count": 151, 1041 | "metadata": {}, 1042 | "outputs": [ 1043 | { 1044 | "name": "stdout", 1045 | "output_type": "stream", 1046 | "text": [ 1047 | "[[1 2 3 4]\n", 1048 | " [5 6 7 8]]\n" 1049 | ] 1050 | }, 1051 | { 1052 | "ename": "ValueError", 1053 | "evalue": "cannot reshape array of size 8 into shape (2,3)", 1054 | "output_type": "error", 1055 | "traceback": [ 1056 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 1057 | "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", 1058 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mbefore\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mafter\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbefore\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mafter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", 1059 | "\u001b[1;31mValueError\u001b[0m: cannot reshape array of size 8 into shape (2,3)" 1060 | ] 1061 | } 1062 | ], 1063 | "source": [ 1064 | "before = np.array([[1,2,3,4],[5,6,7,8]])\n", 1065 | "print(before)\n", 1066 | "\n", 1067 | "after = before.reshape((2,3))\n", 1068 | "print(after)" 1069 | ] 1070 | }, 1071 | { 1072 | "cell_type": "code", 1073 | "execution_count": 158, 1074 | "metadata": {}, 1075 | "outputs": [ 1076 | { 1077 | "data": { 1078 | "text/plain": [ 1079 | "array([[1, 2, 3, 4],\n", 1080 | " [5, 6, 7, 8],\n", 1081 | " [1, 2, 3, 4],\n", 1082 | " [5, 6, 7, 8]])" 1083 | ] 1084 | }, 1085 | "execution_count": 158, 1086 | "metadata": {}, 1087 | "output_type": "execute_result" 1088 | } 1089 | ], 1090 | "source": [ 1091 | "# Vertically stacking vectors\n", 1092 | "v1 = np.array([1,2,3,4])\n", 1093 | "v2 = np.array([5,6,7,8])\n", 1094 | "\n", 1095 | "np.vstack([v1,v2,v1,v2])" 1096 | ] 1097 | }, 1098 | { 1099 | "cell_type": "code", 1100 | "execution_count": 164, 1101 | "metadata": {}, 1102 | "outputs": [ 1103 | { 1104 | "data": { 1105 | "text/plain": [ 1106 | "array([[1., 1., 1., 1., 0., 0.],\n", 1107 | " [1., 1., 1., 1., 0., 0.]])" 1108 | ] 1109 | }, 1110 | "execution_count": 164, 1111 | "metadata": {}, 1112 | "output_type": "execute_result" 1113 | } 1114 | ], 1115 | "source": [ 1116 | "# Horizontal stack\n", 1117 | "h1 = np.ones((2,4))\n", 1118 | "h2 = np.zeros((2,2))\n", 1119 | "\n", 1120 | "np.hstack((h1,h2))" 1121 | ] 1122 | }, 1123 | { 1124 | "cell_type": "markdown", 1125 | "metadata": {}, 1126 | "source": [ 1127 | "### Miscellaneous\n", 1128 | "##### Load Data from File" 1129 | ] 1130 | }, 1131 | { 1132 | "cell_type": "code", 1133 | "execution_count": 179, 1134 | "metadata": {}, 1135 | "outputs": [ 1136 | { 1137 | "name": "stdout", 1138 | "output_type": "stream", 1139 | "text": [ 1140 | "[[ 1 13 21 11 196 75 4 3 34 6 7 8 0 1 2 3 4 5]\n", 1141 | " [ 3 42 12 33 766 75 4 55 6 4 3 4 5 6 7 0 11 12]\n", 1142 | " [ 1 22 33 11 999 11 2 1 78 0 1 2 9 8 7 1 76 88]]\n" 1143 | ] 1144 | } 1145 | ], 1146 | "source": [ 1147 | "filedata = np.genfromtxt('data.txt', delimiter=',')\n", 1148 | "filedata = filedata.astype('int32')\n", 1149 | "print(filedata)" 1150 | ] 1151 | }, 1152 | { 1153 | "cell_type": "markdown", 1154 | "metadata": {}, 1155 | "source": [ 1156 | "##### Boolean Masking and Advanced Indexing" 1157 | ] 1158 | }, 1159 | { 1160 | "cell_type": "code", 1161 | "execution_count": 196, 1162 | "metadata": {}, 1163 | "outputs": [ 1164 | { 1165 | "data": { 1166 | "text/plain": [ 1167 | "array([[ True, True, True, True, True, False, True, True, True,\n", 1168 | " True, True, True, True, True, True, True, True, True],\n", 1169 | " [ True, True, True, True, True, False, True, False, True,\n", 1170 | " True, True, True, True, True, True, True, True, True],\n", 1171 | " [ True, True, True, True, True, True, True, True, False,\n", 1172 | " True, True, True, True, True, True, True, False, False]])" 1173 | ] 1174 | }, 1175 | "execution_count": 196, 1176 | "metadata": {}, 1177 | "output_type": "execute_result" 1178 | } 1179 | ], 1180 | "source": [ 1181 | "(~((filedata > 50) & (filedata < 100)))" 1182 | ] 1183 | }, 1184 | { 1185 | "cell_type": "code", 1186 | "execution_count": null, 1187 | "metadata": {}, 1188 | "outputs": [], 1189 | "source": [] 1190 | }, 1191 | { 1192 | "cell_type": "code", 1193 | "execution_count": null, 1194 | "metadata": {}, 1195 | "outputs": [], 1196 | "source": [] 1197 | }, 1198 | { 1199 | "cell_type": "code", 1200 | "execution_count": null, 1201 | "metadata": {}, 1202 | "outputs": [], 1203 | "source": [] 1204 | }, 1205 | { 1206 | "cell_type": "code", 1207 | "execution_count": null, 1208 | "metadata": {}, 1209 | "outputs": [], 1210 | "source": [] 1211 | }, 1212 | { 1213 | "cell_type": "code", 1214 | "execution_count": null, 1215 | "metadata": {}, 1216 | "outputs": [], 1217 | "source": [] 1218 | } 1219 | ], 1220 | "metadata": { 1221 | "kernelspec": { 1222 | "display_name": "Python 3", 1223 | "language": "python", 1224 | "name": "python3" 1225 | }, 1226 | "language_info": { 1227 | "codemirror_mode": { 1228 | "name": "ipython", 1229 | "version": 3 1230 | }, 1231 | "file_extension": ".py", 1232 | "mimetype": "text/x-python", 1233 | "name": "python", 1234 | "nbconvert_exporter": "python", 1235 | "pygments_lexer": "ipython3", 1236 | "version": "3.6.5" 1237 | } 1238 | }, 1239 | "nbformat": 4, 1240 | "nbformat_minor": 2 1241 | } 1242 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NumPy 2 | 3 | Jupyter Notebook & Data Associated with my Tutorial video on the Python NumPy Library 4 | 5 | Video Link: 6 | https://youtu.be/GB9ByFAIAH4 7 | -------------------------------------------------------------------------------- /data.txt: -------------------------------------------------------------------------------- 1 | 1,13,21,11,196,75,4,3,34,6,7,8,0,1,2,3,4,5 2 | 3,42,12,33,766,75,4,55,6,4,3,4,5,6,7,0,11,12 3 | 1,22,33,11,999,11,2,1,78,0,1,2,9,8,7,1,76,88 4 | --------------------------------------------------------------------------------