ASPP 2024 material
This commit is contained in:
		
						commit
						1f6bc07c51
					
				
					 90 changed files with 91689 additions and 0 deletions
				
			
		|  | @ -0,0 +1,415 @@ | |||
| { | ||||
|  "cells": [ | ||||
|   { | ||||
|    "cell_type": "markdown", | ||||
|    "id": "774cc021", | ||||
|    "metadata": {}, | ||||
|    "source": [ | ||||
|     "# Is it a view or a copy?\n", | ||||
|     "\n", | ||||
|     "- For every operations on the array `x`, decide whether it returns a view of `x`, or a copy\n", | ||||
|     "- If it's a view, derive the new values for the metadata (ndim, shape, strides)\n", | ||||
|     "- You can verify your answers with the function `print_info` defined below" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 10, | ||||
|    "id": "4ccf18f3", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[[ 0  1  2  3]\n", | ||||
|       " [ 4  5  6  7]\n", | ||||
|       " [ 8  9 10 11]]\n", | ||||
|       "\n", | ||||
|       "Is it a view? False\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t2\n", | ||||
|       "shape\t(3, 4)\n", | ||||
|       "strides\t(32, 8)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "import numpy as np\n", | ||||
|     "\n", | ||||
|     "\n", | ||||
|     "def is_view(a, x):\n", | ||||
|     "    \"\"\" Is `a` a view of `x`? \"\"\"\n", | ||||
|     "    return a.base is x\n", | ||||
|     "\n", | ||||
|     "\n", | ||||
|     "def print_info(a, x):\n", | ||||
|     "    txt = f\"\"\"\n", | ||||
|     "Is it a view? {is_view(a, x)}\n", | ||||
|     "\n", | ||||
|     "dtype\\t{a.dtype}\n", | ||||
|     "ndim\\t{a.ndim}\n", | ||||
|     "shape\\t{a.shape}\n", | ||||
|     "strides\\t{a.strides}\n", | ||||
|     "    \"\"\"\n", | ||||
|     "    print(a)\n", | ||||
|     "    print(txt)\n", | ||||
|     "\n", | ||||
|     "\n", | ||||
|     "x = np.arange(12).reshape(3, 4).copy()\n", | ||||
|     "print_info(x, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 11, | ||||
|    "id": "b68308e8", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[[ 0  1  2  3]\n", | ||||
|       " [ 8  9 10 11]]\n", | ||||
|       "\n", | ||||
|       "Is it a view? True\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t2\n", | ||||
|       "shape\t(2, 4)\n", | ||||
|       "strides\t(64, 8)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "y = x[::2, :]\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 12, | ||||
|    "id": "85feedb0", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[4 5 6 7]\n", | ||||
|       "\n", | ||||
|       "Is it a view? True\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t1\n", | ||||
|       "shape\t(4,)\n", | ||||
|       "strides\t(8,)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "y = x[1, :]\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 13, | ||||
|    "id": "dbbb9a7f", | ||||
|    "metadata": { | ||||
|     "scrolled": true | ||||
|    }, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[4 5 6 7]\n", | ||||
|       "\n", | ||||
|       "Is it a view? True\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t1\n", | ||||
|       "shape\t(4,)\n", | ||||
|       "strides\t(8,)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "y = x[1]\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 17, | ||||
|    "id": "4957469c", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[5 9 2]\n", | ||||
|       "\n", | ||||
|       "Is it a view? False\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t1\n", | ||||
|       "shape\t(3,)\n", | ||||
|       "strides\t(8,)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "y = x[[1, 2, 0], [1, 1, 2]]\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 15, | ||||
|    "id": "aa8effeb", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[[ 0  1  2  3]\n", | ||||
|       " [ 8  9 10 11]]\n", | ||||
|       "\n", | ||||
|       "Is it a view? False\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t2\n", | ||||
|       "shape\t(2, 4)\n", | ||||
|       "strides\t(32, 8)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "# Get the first and third row\n", | ||||
|     "y = x[[0, 2], :]\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 51, | ||||
|    "id": "d1649515", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[[ 0  1]\n", | ||||
|       " [ 2  3]\n", | ||||
|       " [ 4  5]\n", | ||||
|       " [ 6  7]\n", | ||||
|       " [ 8  9]\n", | ||||
|       " [10 11]]\n", | ||||
|       "\n", | ||||
|       "Is it a view? True\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t2\n", | ||||
|       "shape\t(6, 2)\n", | ||||
|       "strides\t(16, 8)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "y = x.reshape((6, 2))\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 53, | ||||
|    "id": "15b0d7ad", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[ 0  1  2  3  4  5  6  7  8  9 10 11]\n", | ||||
|       "\n", | ||||
|       "Is it a view? True\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t1\n", | ||||
|       "shape\t(12,)\n", | ||||
|       "strides\t(8,)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "y = x.ravel()\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 54, | ||||
|    "id": "38cc1ef3", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[ 0  4  8  1  5  9  2  6 10  3  7 11]\n", | ||||
|       "\n", | ||||
|       "Is it a view? False\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t1\n", | ||||
|       "shape\t(12,)\n", | ||||
|       "strides\t(8,)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "y = x.T.ravel()\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 62, | ||||
|    "id": "b7d0cc63", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[ 1  3  5  7  9 11]\n", | ||||
|       "\n", | ||||
|       "Is it a view? False\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t1\n", | ||||
|       "shape\t(6,)\n", | ||||
|       "strides\t(8,)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "# Get all the odd elements\n", | ||||
|     "y = x[(x % 2) == 1]\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 57, | ||||
|    "id": "4474f8cf", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[[ 2  3  4  5]\n", | ||||
|       " [ 6  7  8  9]\n", | ||||
|       " [10 11 12 13]]\n", | ||||
|       "\n", | ||||
|       "Is it a view? False\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t2\n", | ||||
|       "shape\t(3, 4)\n", | ||||
|       "strides\t(32, 8)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "y = x + 2\n", | ||||
|     "print_info(y, x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": 59, | ||||
|    "id": "866e842a", | ||||
|    "metadata": {}, | ||||
|    "outputs": [ | ||||
|     { | ||||
|      "name": "stdout", | ||||
|      "output_type": "stream", | ||||
|      "text": [ | ||||
|       "[[ 0  1  2  3]\n", | ||||
|       " [ 4  5  6  7]\n", | ||||
|       " [ 8  9 10 11]]\n", | ||||
|       "\n", | ||||
|       "Is it a view? False\n", | ||||
|       "\n", | ||||
|       "dtype\tint64\n", | ||||
|       "ndim\t2\n", | ||||
|       "shape\t(3, 4)\n", | ||||
|       "strides\t(32, 8)\n", | ||||
|       "    \n" | ||||
|      ] | ||||
|     } | ||||
|    ], | ||||
|    "source": [ | ||||
|     "y = np.sort(x, axis=1)\n", | ||||
|     "print_info(y ,x)" | ||||
|    ] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": null, | ||||
|    "id": "a074c89b", | ||||
|    "metadata": {}, | ||||
|    "outputs": [], | ||||
|    "source": [] | ||||
|   }, | ||||
|   { | ||||
|    "cell_type": "code", | ||||
|    "execution_count": null, | ||||
|    "id": "320cfb50", | ||||
|    "metadata": {}, | ||||
|    "outputs": [], | ||||
|    "source": [] | ||||
|   } | ||||
|  ], | ||||
|  "metadata": { | ||||
|   "kernelspec": { | ||||
|    "display_name": "Python 3 (ipykernel)", | ||||
|    "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.11.3" | ||||
|   } | ||||
|  }, | ||||
|  "nbformat": 4, | ||||
|  "nbformat_minor": 5 | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue