From 021574d57b807d58f2c4f6df013a912b4bf92e91 Mon Sep 17 00:00:00 2001 From: Phil Weir Date: Sat, 4 Sep 2021 18:31:18 +0100 Subject: [PATCH] split out answers --- 002-basic-control-structures/Answers.ipynb | 174 +++- .../Basic control structures II.ipynb | 216 +---- ...w Treatment for Arthritis-checkpoint.ipynb | 871 ++---------------- .../A New Treatment for Arthritis.ipynb | 82 +- 004-inflammation/Answers.ipynb | 117 +++ 5 files changed, 358 insertions(+), 1102 deletions(-) create mode 100644 004-inflammation/Answers.ipynb diff --git a/002-basic-control-structures/Answers.ipynb b/002-basic-control-structures/Answers.ipynb index 8a4d002..5f0591c 100644 --- a/002-basic-control-structures/Answers.ipynb +++ b/002-basic-control-structures/Answers.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "5db4ea72", + "id": "18edd6b8", "metadata": {}, "source": [ "# 002: Basic Control Structures" @@ -10,7 +10,7 @@ }, { "cell_type": "markdown", - "id": "67a80e4b", + "id": "b81f64c7", "metadata": {}, "source": [ "## Strung together" @@ -19,7 +19,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5c82c39d", + "id": "0bbef854", "metadata": {}, "outputs": [], "source": [ @@ -39,7 +39,7 @@ { "cell_type": "code", "execution_count": null, - "id": "92953c8a", + "id": "042fe0fe", "metadata": {}, "outputs": [], "source": [ @@ -59,7 +59,7 @@ }, { "cell_type": "markdown", - "id": "02f31524", + "id": "0aa57294", "metadata": {}, "source": [ "## Zipping Up" @@ -68,7 +68,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7a8e5af9", + "id": "8346f014", "metadata": {}, "outputs": [], "source": [ @@ -98,7 +98,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4cb9272c", + "id": "280668c6", "metadata": {}, "outputs": [], "source": [ @@ -107,6 +107,166 @@ " new_dct[key] = value\n", "new_dct" ] + }, + { + "cell_type": "markdown", + "id": "fc7335c1", + "metadata": {}, + "source": [ + "# 002: Basic Control Structures II" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f97f8a7", + "metadata": {}, + "outputs": [], + "source": [ + "def dict_to_string_map(dct):\n", + " new_dct = {}\n", + " \n", + " for key, value in dct.items():\n", + " if type(value) is list:\n", + " new_dct[key] = ', '.join(value)\n", + " else:\n", + " new_dct[key] = str(value)\n", + " \n", + " return new_dct\n", + "\n", + "dict_to_string_map(my_meetup_dot_com_profile)" + ] + }, + { + "cell_type": "markdown", + "id": "ddfefa3e", + "metadata": {}, + "source": [ + "## Yes but no, but yes, but no" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "92ae43cd", + "metadata": {}, + "outputs": [], + "source": [ + "# ANANSWER\n", + "my_dictionary = {\n", + " 'hoho': 1,\n", + " 'hehe': 2,\n", + " 'myhaha': 3\n", + "}\n", + "# hoho, hehe, myhaha are fine; anything else gives a KeyError, unless it contains the text \"haha\"\n", + "\n", + "def check_dictionary(key, dct):\n", + " try:\n", + " dct[key]\n", + " except KeyError as e:\n", + " if 'haha' in key:\n", + " raise RuntimeError(\"Now you're just having a laugh\")\n", + " raise e\n", + " \n", + "check_dictionary('myhaha', my_dictionary) # fine\n", + "check_dictionary('hohoho', my_dictionary) # KeyError\n", + "check_dictionary('hohohaha', my_dictionary) # RuntimeError" + ] + }, + { + "cell_type": "markdown", + "id": "00e18caa", + "metadata": {}, + "source": [ + "## Three's a crowd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a9c5d24", + "metadata": {}, + "outputs": [], + "source": [ + "filter_function = lambda n: (n % 3 > 0) and (n < 1000) # INSERT FUNCTION HERE - SHOULD EVALUATE TO TRUE or FALSE\n", + "list(filter(filter_function, [1, 234, 129123, 15, 34, 41991, 14]))" + ] + }, + { + "cell_type": "markdown", + "id": "18e1be05", + "metadata": {}, + "source": [ + "## Calling a halt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "afde3db9", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "with open('halts.geojson', 'r') as halts_f:\n", + " halts_geojson = json.load(halts_f)\n", + "\n", + "all_halts = halts_geojson['features']\n", + "halt_names = map(lambda feature: feature['properties']['Station'], all_halts)\n", + "belfast_halts = filter(lambda name: name.startswith('BELFAST'), halt_names) # replace this line\n", + "belfast_halts = map(lambda name: name.replace('BELFAST - ', '').replace(' RAIL HALT', ''), belfast_halts)\n", + "\n", + "sorted(belfast_halts)" + ] + }, + { + "cell_type": "markdown", + "id": "de885134", + "metadata": {}, + "source": [ + "## End of the line" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0a53f4bb", + "metadata": {}, + "outputs": [], + "source": [ + "with open('halts.geojson', 'r') as halts_f:\n", + " halts_geojson = json.load(halts_f)\n", + "\n", + "halts_dictionary = {h['properties']['Station']: h['geometry']['coordinates'] for h in halts_geojson['features']}\n", + "\n", + "halts_dictionary if halts_dictionary['BELFAST - ADELAIDE RAIL HALT'] != [-5.955437428473338, 54.57871560269907] else \"🥳\"" + ] + }, + { + "cell_type": "markdown", + "id": "58874cf8", + "metadata": {}, + "source": [ + "## Optimal Prime" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2dcc13e8", + "metadata": {}, + "outputs": [], + "source": [ + "def is_prime(n):\n", + " if n == 2:\n", + " return True\n", + " \n", + " for y in primes():\n", + " if y > int(n ** .5):\n", + " return True\n", + " if n % y == 0:\n", + " return False" + ] } ], "metadata": { diff --git a/002-basic-control-structures/Basic control structures II.ipynb b/002-basic-control-structures/Basic control structures II.ipynb index fa4e18f..f5a80a1 100644 --- a/002-basic-control-structures/Basic control structures II.ipynb +++ b/002-basic-control-structures/Basic control structures II.ipynb @@ -445,37 +445,6 @@ "NB: I do not endorse subclassing `str` for real-world applications! From the above you can see that, even though it is a basic type, it is also a class - this is important - but you should also note that supplanting basic types unexpectedly makes code less intuitive and maintainable (again, see Pythonic...)" ] }, - { - "cell_type": "markdown", - "metadata": { - "hideCode": false, - "hidePrompt": false - }, - "source": [ - "### One Answer" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideCode": true, - "hideOutput": true, - "hidePrompt": false - }, - "outputs": [], - "source": [ - "# ANANSWER\n", - "class MyString(str):\n", - " def join(self, iterable):\n", - " if \"Pottery\" in iterable:\n", - " raise RuntimeError(\"You have interests that aren't Python?\")\n", - " return str.join(self, iterable)\n", - " \n", - "delimiter = MyString(\",\")\n", - "delimiter.join(my_meetup_dot_com_profile[\"Interests\"])" - ] - }, { "cell_type": "markdown", "metadata": { @@ -887,6 +856,15 @@ "Looking at it from the other end, just as we should be more specific about what we catch, we should be more specific about what we catch. This is a good idea, as, usually when we catch an exception, it is because we expect a particular thing to go wrong. As a case in point:" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os" + ] + }, { "cell_type": "code", "execution_count": null, @@ -1012,37 +990,6 @@ "There are several ways to accomplish this, but focus on try-except." ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideCode": true, - "hideOutput": false, - "scrolled": true - }, - "outputs": [], - "source": [ - "# ANANSWER\n", - "my_dictionary = {\n", - " 'hoho': 1,\n", - " 'hehe': 2,\n", - " 'myhaha': 3\n", - "}\n", - "# hoho, hehe, myhaha are fine; anything else gives a KeyError, unless it contains the text \"haha\"\n", - "\n", - "def check_dictionary(key, dct):\n", - " try:\n", - " dct[key]\n", - " except KeyError as e:\n", - " if 'haha' in key:\n", - " raise RuntimeError(\"Now you're just having a laugh\")\n", - " raise e\n", - " \n", - "check_dictionary('myhaha', my_dictionary) # fine\n", - "check_dictionary('hohoho', my_dictionary) # KeyError\n", - "check_dictionary('hohohaha', my_dictionary) # RuntimeError" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -1600,31 +1547,6 @@ "list(filter(filter_function, [1, 234, 129123, 15, 34, 41991, 14])) # Should give [1, 34, 14]" ] }, - { - "cell_type": "markdown", - "metadata": { - "hideCode": false, - "hidePrompt": false - }, - "source": [ - "### One Answer" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideCode": true, - "hideOutput": true, - "hidePrompt": false - }, - "outputs": [], - "source": [ - "# ANANSWER\n", - "filter_function = lambda n: (n % 3 > 0) and (n < 1000) # INSERT FUNCTION HERE - SHOULD EVALUATE TO TRUE or FALSE\n", - "list(filter(filter_function, [1, 234, 129123, 15, 34, 41991, 14]))" - ] - }, { "cell_type": "markdown", "metadata": { @@ -1663,37 +1585,8 @@ " halts_geojson = json.load(halts_f)\n", "\n", "belfast_halts = halts_geojson # replace this line\n", - " \n", - "sorted(halts_list)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### One Answer" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideCode": true, - "hidePrompt": false - }, - "outputs": [], - "source": [ - "#AN ANSWER\n", - "import json\n", - "with open('halts.geojson', 'r') as halts_f:\n", - " halts_geojson = json.load(halts_f)\n", "\n", - "all_halts = halts_geojson['features']\n", - "halt_names = map(lambda feature: feature['properties']['Station'], all_halts)\n", - "belfast_halts = filter(lambda name: name.startswith('BELFAST'), halt_names) # replace this line\n", - "belfast_halts = map(lambda name: name.replace('BELFAST - ', '').replace(' RAIL HALT', ''), belfast_halts)\n", - "\n", - "sorted(belfast_halts)" + "sorted(halts_list)" ] }, { @@ -1864,15 +1757,7 @@ "hidePrompt": false }, "outputs": [], - "source": [ - "# ANANSWER\n", - "with open('halts.geojson', 'r') as halts_f:\n", - " halts_geojson = json.load(halts_f)\n", - "\n", - "halts_dictionary = {h['properties']['Station']: h['geometry']['coordinates'] for h in halts_geojson['features']}\n", - "\n", - "halts_dictionary if halts_dictionary['BELFAST - ADELAIDE RAIL HALT'] != [-5.955437428473338, 54.57871560269907] else \"🥳\"" - ] + "source": [] }, { "cell_type": "markdown", @@ -2249,38 +2134,6 @@ " print(prime)" ] }, - { - "cell_type": "markdown", - "metadata": { - "hideCode": false, - "hidePrompt": false - }, - "source": [ - "### One Answer" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideCode": false, - "hideOutput": false, - "hidePrompt": false - }, - "outputs": [], - "source": [ - "# ANANSWER\n", - "def is_prime(n):\n", - " if n == 2:\n", - " return True\n", - " \n", - " for y in primes():\n", - " if y > int(n ** .5):\n", - " return True\n", - " if n % y == 0:\n", - " return False" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -2305,7 +2158,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -2325,20 +2178,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'4'" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "@val2string\n", "def add(a, b):\n", @@ -2352,40 +2194,18 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\"['this', 'that']\"" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "add(['this'], ['that'])" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'12'" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "mul(6, 2)" ] diff --git a/004-inflammation/.ipynb_checkpoints/A New Treatment for Arthritis-checkpoint.ipynb b/004-inflammation/.ipynb_checkpoints/A New Treatment for Arthritis-checkpoint.ipynb index 1cc0008..d9ee9b9 100644 --- a/004-inflammation/.ipynb_checkpoints/A New Treatment for Arthritis-checkpoint.ipynb +++ b/004-inflammation/.ipynb_checkpoints/A New Treatment for Arthritis-checkpoint.ipynb @@ -103,24 +103,13 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4,2,3,0,0\n", - " 0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5,1,1,0,1\n", - " 0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3,2,2,1,1\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "with open('data/inflammation-01.csv', 'r') as f:\n", " snippet = f.readlines()[:3]\n", @@ -209,23 +198,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0. 0. 1. ... 3. 0. 0.]\n", - " [0. 1. 2. ... 1. 0. 1.]\n", - " [0. 1. 1. ... 2. 1. 1.]\n", - " ...\n", - " [0. 1. 1. ... 1. 1. 1.]\n", - " [0. 0. 0. ... 0. 2. 0.]\n", - " [0. 0. 1. ... 1. 1. 0.]]\n" - ] - } - ], + "outputs": [], "source": [ "import numpy as np\n", "data = np.loadtxt(fname='data/inflammation-01.csv', delimiter=',') # Comma-separated...\n", @@ -245,24 +220,13 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "numpy.ndarray" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "type(data)" ] @@ -282,24 +246,13 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "(60, 40)" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data.shape" ] @@ -328,22 +281,11 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "'T, __abs__, __add__, __and__, __array__, __array_finalize__, __array_function__, __array_interface__, __array_prepare__, __array_priority__, __array_struct__, __array_ufunc__, __array_wrap__, __bool__, __class__, __complex__, __contains__, __copy__, __deepcopy__, __delattr__, __delitem__, __dir__, __divmod__, __doc__, __eq__, __float__, __floordiv__, __format__, __ge__, __getattribute__, __getitem__, __gt__, __hash__, __iadd__, __iand__, __ifloordiv__, __ilshift__, __imatmul__, __imod__, __imul__, __index__, __init__, __init_subclass__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iter__, __itruediv__, __ixor__, __le__, __len__, __lshift__, __lt__, __matmul__, __mod__, __mul__, __ne__, __neg__, __new__, __or__, __pos__, __pow__, __radd__, __rand__, __rdivmod__, __reduce__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmatmul__, __rmod__, __rmul__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __setattr__, __setitem__, __setstate__, __sizeof__, __str__, __sub__, __subclasshook__, __truediv__, __xor__, all, any, argmax, argmin, argpartition, argsort, astype, base, byteswap, choose, clip, compress, conj, conjugate, copy, ctypes, cumprod, cumsum, data, diagonal, dot, dtype, dump, dumps, fill, flags, flat, flatten, getfield, imag, item, itemset, itemsize, max, mean, min, nbytes, ndim, newbyteorder, nonzero, partition, prod, ptp, put, ravel, real, repeat, reshape, resize, round, searchsorted, setfield, setflags, shape, size, sort, squeeze, std, strides, sum, swapaxes, take, tobytes, tofile, tolist, tostring, trace, transpose, var, view'" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "\", \".join(dir(data))" ] @@ -363,27 +305,13 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[[0. 0. 2. ... 6. 0. 0.]\n", - " [0. 2. 4. ... 2. 0. 2.]\n", - " [0. 2. 2. ... 4. 2. 2.]\n", - " ...\n", - " [0. 2. 2. ... 2. 2. 2.]\n", - " [0. 0. 0. ... 0. 4. 0.]\n", - " [0. 0. 2. ... 2. 2. 0.]]\n" - ] - } - ], + "outputs": [], "source": [ "print(data * 2)" ] @@ -408,44 +336,18 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0., 0.],\n", - " [0., 1.],\n", - " [0., 1.]])" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[0:3, 0:2]" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0., 0., 1.],\n", - " [0., 1., 2.],\n", - " [0., 1., 1.]])" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[:3,:3]" ] @@ -474,22 +376,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0., 1., 1.],\n", - " [0., 0., 0.],\n", - " [0., 0., 1.]])" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[-3:, :3]" ] @@ -507,24 +396,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "(6.14875, 20.0, 0.0)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data.mean(), data.max(), data.min()" ] @@ -540,7 +418,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise" + "### Exercise: Times tables" ] }, { @@ -552,133 +430,13 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import time" ] }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "hideOutput": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99999999\n" - ] - }, - { - "data": { - "text/plain": [ - "2.4693245887756348" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start = time.time()\n", - "biggest = max(range(100000000))\n", - "print(biggest)\n", - "time.time() - start" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "hideOutput": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99999999\n" - ] - }, - { - "data": { - "text/plain": [ - "9.661295175552368" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start = time.time()\n", - "# create a max-finding for-loop here\n", - "biggest = 0\n", - "for i in range(100000000):\n", - " if i > biggest:\n", - " biggest = i\n", - "print(i)\n", - "time.time() - start" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "hideOutput": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "0.5991225242614746" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "start = time.time()\n", - "# create a 1e8 length numpy array, and find the max\n", - "my_range = np.arange(1e8)\n", - "biggest = my_range.max()\n", - "time.time() - start" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "hideCode": false, - "hideOutput": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "0.4191734790802002" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# ANANSWER\n", - "start = time.time()\n", - "np.arange(1e8).max()\n", - "time.time() - start" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -709,24 +467,13 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "17.0" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[3, :].max() # Max inflammation for 4th patient" ] @@ -740,47 +487,22 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "3.0" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[:,3].max() # Max infl for 2nd day" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0., 1., 2., 1., 2., 1., 3., 2., 2., 6., 10., 11., 5.,\n", - " 9., 4., 4., 7., 16., 8., 6., 18., 4., 12., 5., 12., 7.,\n", - " 11., 5., 11., 3., 3., 5., 4., 4., 5., 5., 1., 1., 0.,\n", - " 1.])" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data[1, :]" ] @@ -809,27 +531,13 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12.,\n", - " 13., 14., 15., 16., 17., 18., 19., 20., 19., 18., 17., 16., 15.,\n", - " 14., 13., 12., 11., 10., 9., 8., 7., 6., 5., 4., 3., 2.,\n", - " 1.])" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data.max(axis=0)" ] @@ -870,24 +578,13 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "(40,)" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "data.max(axis=0).shape" ] @@ -907,7 +604,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise" + "### Exercise: Array of methods" ] }, { @@ -939,29 +636,6 @@ "outputs": [], "source": [] }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "hideCode": false, - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0. 0.45 1.11666667]\n", - "[0. 0.45 1.11666667]\n" - ] - } - ], - "source": [ - "# ANANSWER\n", - "print(data.mean(axis=0)[:3])\n", - "print(data[:,:3].mean(axis=0))" - ] - }, { "cell_type": "markdown", "metadata": { @@ -987,7 +661,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1008,26 +682,13 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib\n", "pretty_pic = matplotlib.pyplot.imshow(data)\n", @@ -1058,22 +719,9 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import matplotlib\n", "pretty_pic = matplotlib.pyplot.imshow(data[4:7].T)\n", @@ -1161,22 +809,9 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import numpy as np\n", "from matplotlib import pyplot\n", @@ -1197,7 +832,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": { "scrolled": false, "slideshow": { @@ -1233,26 +868,13 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# This is the whole figure, possibly\n", "# with multiple subplots\n", @@ -1284,26 +906,13 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = pyplot.figure(figsize=(10.0, 3.0))\n", "\n", @@ -1430,328 +1039,9 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "
\n", - " \n", - " Loading BokehJS ...\n", - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "\n", - "(function(root) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " var force = true;\n", - "\n", - " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", - " root._bokeh_onload_callbacks = [];\n", - " root._bokeh_is_loading = undefined;\n", - " }\n", - "\n", - " var JS_MIME_TYPE = 'application/javascript';\n", - " var HTML_MIME_TYPE = 'text/html';\n", - " var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", - " var CLASS_NAME = 'output_bokeh rendered_html';\n", - "\n", - " /**\n", - " * Render data to the DOM node\n", - " */\n", - " function render(props, node) {\n", - " var script = document.createElement(\"script\");\n", - " node.appendChild(script);\n", - " }\n", - "\n", - " /**\n", - " * Handle when an output is cleared or removed\n", - " */\n", - " function handleClearOutput(event, handle) {\n", - " var cell = handle.cell;\n", - "\n", - " var id = cell.output_area._bokeh_element_id;\n", - " var server_id = cell.output_area._bokeh_server_id;\n", - " // Clean up Bokeh references\n", - " if (id != null && id in Bokeh.index) {\n", - " Bokeh.index[id].model.document.clear();\n", - " delete Bokeh.index[id];\n", - " }\n", - "\n", - " if (server_id !== undefined) {\n", - " // Clean up Bokeh references\n", - " var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", - " cell.notebook.kernel.execute(cmd, {\n", - " iopub: {\n", - " output: function(msg) {\n", - " var id = msg.content.text.trim();\n", - " if (id in Bokeh.index) {\n", - " Bokeh.index[id].model.document.clear();\n", - " delete Bokeh.index[id];\n", - " }\n", - " }\n", - " }\n", - " });\n", - " // Destroy server and session\n", - " var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", - " cell.notebook.kernel.execute(cmd);\n", - " }\n", - " }\n", - "\n", - " /**\n", - " * Handle when a new output is added\n", - " */\n", - " function handleAddOutput(event, handle) {\n", - " var output_area = handle.output_area;\n", - " var output = handle.output;\n", - "\n", - " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", - " if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", - " return\n", - " }\n", - "\n", - " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", - "\n", - " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", - " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", - " // store reference to embed id on output_area\n", - " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", - " }\n", - " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", - " var bk_div = document.createElement(\"div\");\n", - " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", - " var script_attrs = bk_div.children[0].attributes;\n", - " for (var i = 0; i < script_attrs.length; i++) {\n", - " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", - " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", - " }\n", - " // store reference to server id on output_area\n", - " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", - " }\n", - " }\n", - "\n", - " function register_renderer(events, OutputArea) {\n", - "\n", - " function append_mime(data, metadata, element) {\n", - " // create a DOM node to render to\n", - " var toinsert = this.create_output_subarea(\n", - " metadata,\n", - " CLASS_NAME,\n", - " EXEC_MIME_TYPE\n", - " );\n", - " this.keyboard_manager.register_events(toinsert);\n", - " // Render to node\n", - " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", - " render(props, toinsert[toinsert.length - 1]);\n", - " element.append(toinsert);\n", - " return toinsert\n", - " }\n", - "\n", - " /* Handle when an output is cleared or removed */\n", - " events.on('clear_output.CodeCell', handleClearOutput);\n", - " events.on('delete.Cell', handleClearOutput);\n", - "\n", - " /* Handle when a new output is added */\n", - " events.on('output_added.OutputArea', handleAddOutput);\n", - "\n", - " /**\n", - " * Register the mime type and append_mime function with output_area\n", - " */\n", - " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", - " /* Is output safe? */\n", - " safe: true,\n", - " /* Index of renderer in `output_area.display_order` */\n", - " index: 0\n", - " });\n", - " }\n", - "\n", - " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", - " if (root.Jupyter !== undefined) {\n", - " var events = require('base/js/events');\n", - " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", - "\n", - " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", - " register_renderer(events, OutputArea);\n", - " }\n", - " }\n", - "\n", - " \n", - " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", - " root._bokeh_timeout = Date.now() + 5000;\n", - " root._bokeh_failed_load = false;\n", - " }\n", - "\n", - " var NB_LOAD_WARNING = {'data': {'text/html':\n", - " \"
\\n\"+\n", - " \"

\\n\"+\n", - " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", - " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", - " \"

\\n\"+\n", - " \"
    \\n\"+\n", - " \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n", - " \"
  • use INLINE resources instead, as so:
  • \\n\"+\n", - " \"
\\n\"+\n", - " \"\\n\"+\n", - " \"from bokeh.resources import INLINE\\n\"+\n", - " \"output_notebook(resources=INLINE)\\n\"+\n", - " \"\\n\"+\n", - " \"
\"}};\n", - "\n", - " function display_loaded() {\n", - " var el = document.getElementById(\"1209\");\n", - " if (el != null) {\n", - " el.textContent = \"BokehJS is loading...\";\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " if (el != null) {\n", - " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", - " }\n", - " } else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(display_loaded, 100)\n", - " }\n", - " }\n", - "\n", - "\n", - " function run_callbacks() {\n", - " try {\n", - " root._bokeh_onload_callbacks.forEach(function(callback) {\n", - " if (callback != null)\n", - " callback();\n", - " });\n", - " } finally {\n", - " delete root._bokeh_onload_callbacks\n", - " }\n", - " console.debug(\"Bokeh: all callbacks have finished\");\n", - " }\n", - "\n", - " function load_libs(css_urls, js_urls, callback) {\n", - " if (css_urls == null) css_urls = [];\n", - " if (js_urls == null) js_urls = [];\n", - "\n", - " root._bokeh_onload_callbacks.push(callback);\n", - " if (root._bokeh_is_loading > 0) {\n", - " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls == null || js_urls.length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", - "\n", - " function on_load() {\n", - " root._bokeh_is_loading--;\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", - " run_callbacks()\n", - " }\n", - " }\n", - "\n", - " function on_error() {\n", - " console.error(\"failed to load \" + url);\n", - " }\n", - "\n", - " for (var i = 0; i < css_urls.length; i++) {\n", - " var url = css_urls[i];\n", - " const element = document.createElement(\"link\");\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.rel = \"stylesheet\";\n", - " element.type = \"text/css\";\n", - " element.href = url;\n", - " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.2.min.js\": \"ufR9RFnRs6lniiaFvtJziE0YeidtAgBRH6ux2oUItHw5WTvE1zuk9uzhUU/FJXDp\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.2.min.js\": \"8QM/PGWBT+IssZuRcDcjzwIh1mkOmJSoNMmyYDZbCfXJg3Ap1lEvdVgFuSAwhb/J\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.2.min.js\": \"Jm8cH3Rg0P6UeZhVY5cLy1WzKajUT9KImCY+76hEqrcJt59/d8GPvFHjCkYgnSIn\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.2.min.js\": \"Ozhzj+SI7ywm74aOI/UajcWz+C0NjsPunEVyVIrxzYkB+jA+2tUw8x5xJCbVtK5I\"};\n", - "\n", - " for (var i = 0; i < js_urls.length; i++) {\n", - " var url = js_urls[i];\n", - " var element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.async = false;\n", - " element.src = url;\n", - " if (url in hashes) {\n", - " element.crossOrigin = \"anonymous\";\n", - " element.integrity = \"sha384-\" + hashes[url];\n", - " }\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.head.appendChild(element);\n", - " }\n", - " };\n", - "\n", - " function inject_raw_css(css) {\n", - " const element = document.createElement(\"style\");\n", - " element.appendChild(document.createTextNode(css));\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " \n", - " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.2.min.js\"];\n", - " var css_urls = [];\n", - " \n", - "\n", - " var inline_js = [\n", - " function(Bokeh) {\n", - " Bokeh.set_log_level(\"info\");\n", - " },\n", - " function(Bokeh) {\n", - " \n", - " \n", - " }\n", - " ];\n", - "\n", - " function run_inline_js() {\n", - " \n", - " if (root.Bokeh !== undefined || force === true) {\n", - " \n", - " for (var i = 0; i < inline_js.length; i++) {\n", - " inline_js[i].call(root, root.Bokeh);\n", - " }\n", - " if (force === true) {\n", - " display_loaded();\n", - " }} else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(run_inline_js, 100);\n", - " } else if (!root._bokeh_failed_load) {\n", - " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", - " root._bokeh_failed_load = true;\n", - " } else if (force !== true) {\n", - " var cell = $(document.getElementById(\"1209\")).parents('.cell').data().cell;\n", - " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", - " }\n", - "\n", - " }\n", - "\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", - " run_inline_js();\n", - " } else {\n", - " load_libs(css_urls, js_urls, function() {\n", - " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", - " run_inline_js();\n", - " });\n", - " }\n", - "}(window));" - ], - "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"
    \\n\"+\n \"
  • re-rerun `output_notebook()` to attempt to load from CDN again, or
  • \\n\"+\n \"
  • use INLINE resources instead, as so:
  • \\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1209\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.2.min.js\": \"ufR9RFnRs6lniiaFvtJziE0YeidtAgBRH6ux2oUItHw5WTvE1zuk9uzhUU/FJXDp\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.2.min.js\": \"8QM/PGWBT+IssZuRcDcjzwIh1mkOmJSoNMmyYDZbCfXJg3Ap1lEvdVgFuSAwhb/J\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.2.min.js\": \"Jm8cH3Rg0P6UeZhVY5cLy1WzKajUT9KImCY+76hEqrcJt59/d8GPvFHjCkYgnSIn\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.2.min.js\": \"Ozhzj+SI7ywm74aOI/UajcWz+C0NjsPunEVyVIrxzYkB+jA+2tUw8x5xJCbVtK5I\"};\n\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n if (url in hashes) {\n element.crossOrigin = \"anonymous\";\n element.integrity = \"sha384-\" + hashes[url];\n }\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.0.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.0.2.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1209\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import numpy as np\n", "import bokeh.plotting as bplot\n", @@ -1768,68 +1058,13 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function embed_document(root) {\n", - " \n", - " var docs_json = {\"bc5514bf-d681-49cc-8f2a-d55d4aa6afe1\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1110\"}],\"center\":[{\"id\":\"1113\"},{\"id\":\"1117\"}],\"left\":[{\"id\":\"1114\"}],\"renderers\":[{\"id\":\"1135\"}],\"title\":{\"id\":\"1147\"},\"toolbar\":{\"id\":\"1125\"},\"x_range\":{\"id\":\"1102\"},\"x_scale\":{\"id\":\"1106\"},\"y_range\":{\"id\":\"1104\"},\"y_scale\":{\"id\":\"1108\"}},\"id\":\"1101\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1106\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1133\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1115\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Day\",\"formatter\":{\"id\":\"1148\"},\"ticker\":{\"id\":\"1111\"}},\"id\":\"1110\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1108\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1111\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1110\"},\"ticker\":null},\"id\":\"1113\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1148\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1132\"}},\"id\":\"1136\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"1114\"},\"dimension\":1,\"ticker\":null},\"id\":\"1117\",\"type\":\"Grid\"},{\"attributes\":{\"formatter\":{\"id\":\"1150\"},\"ticker\":{\"id\":\"1115\"}},\"id\":\"1114\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1134\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1150\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1124\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1154\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1123\",\"type\":\"HelpTool\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1118\"},{\"id\":\"1119\"},{\"id\":\"1120\"},{\"id\":\"1121\"},{\"id\":\"1122\"},{\"id\":\"1123\"}]},\"id\":\"1125\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":{\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],\"y\":{\"__ndarray__\":\"AAAAAAAAAADNzMzMzMzcP97d3d3d3fE/AAAAAAAA/D93d3d3d3cDQDMzMzMzMwlAZmZmZmZmDkAREREREREPQO/u7u7u7hRAERERERERFkDNzMzMzMwXQJqZmZmZmRdAMzMzMzOzIEDv7u7u7u4eQLy7u7u7uyBAAAAAAAAAI0CrqqqqqiojQERERERERCVAIiIiIiIiJ0AzMzMzM7MoQAAAAAAAgCpA7+7u7u7uJ0AREREREREmQFVVVVVVVSRAAAAAAAAAJEBVVVVVVVUhQM3MzMzMTCJAAAAAAAAAHUBVVVVVVVUdQFVVVVVVVRpAREREREREGEDNzMzMzMwXQHd3d3d3dxRAzczMzMzMDEBmZmZmZmYKQImIiIiIiAxA3t3d3d3dA0AAAAAAAAD4PyIiIiIiIvI/IiIiIiIi4j8=\",\"dtype\":\"float64\",\"shape\":[40]}},\"selected\":{\"id\":\"1153\"},\"selection_policy\":{\"id\":\"1154\"}},\"id\":\"1132\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"1132\"},\"glyph\":{\"id\":\"1133\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1134\"},\"selection_glyph\":null,\"view\":{\"id\":\"1136\"}},\"id\":\"1135\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1118\",\"type\":\"PanTool\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1147\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1119\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1124\"}},\"id\":\"1120\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1104\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1121\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1153\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1102\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"ResetTool\"}],\"root_ids\":[\"1101\"]},\"title\":\"Bokeh Application\",\"version\":\"2.0.2\"}};\n", - " var render_items = [{\"docid\":\"bc5514bf-d681-49cc-8f2a-d55d4aa6afe1\",\"root_ids\":[\"1101\"],\"roots\":{\"1101\":\"a6bc3d94-88e6-4326-9078-5b2a78307ccb\"}}];\n", - " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", - "\n", - " }\n", - " if (root.Bokeh !== undefined) {\n", - " embed_document(root);\n", - " } else {\n", - " var attempts = 0;\n", - " var timer = setInterval(function(root) {\n", - " if (root.Bokeh !== undefined) {\n", - " clearInterval(timer);\n", - " embed_document(root);\n", - " } else {\n", - " attempts++;\n", - " if (attempts > 100) {\n", - " clearInterval(timer);\n", - " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", - " }\n", - " }\n", - " }, 10, root)\n", - " }\n", - "})(window);" - ], - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "1101" - } - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "fig = bplot.figure()\n", "days = np.arange(data.shape[1])\n", @@ -2109,9 +1344,9 @@ "fig.xaxis.axis_label = 'Day'\n", "fig.yaxis.axis_label = 'Inflammation'\n", "\n", - "fig.line(days, data.mean(axis=0), legend='Average', color='green')\n", - "fig.line(days, data.max(axis=0), legend='Max', color='blue')\n", - "fig.line(days, data.min(axis=0), legend='Min', color='red')\n", + "fig.line(days, data.mean(axis=0), legend_label='Average', color='green')\n", + "fig.line(days, data.max(axis=0), legend_label='Max', color='blue')\n", + "fig.line(days, data.min(axis=0), legend_label='Min', color='red')\n", "\n", "bplot.show(fig)" ] @@ -2165,7 +1400,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.7.11" }, "livereveal": { "theme": "beige", diff --git a/004-inflammation/A New Treatment for Arthritis.ipynb b/004-inflammation/A New Treatment for Arthritis.ipynb index 33ac655..d9ee9b9 100644 --- a/004-inflammation/A New Treatment for Arthritis.ipynb +++ b/004-inflammation/A New Treatment for Arthritis.ipynb @@ -418,7 +418,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise" + "### Exercise: Times tables" ] }, { @@ -437,68 +437,6 @@ "import time" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideOutput": true - }, - "outputs": [], - "source": [ - "start = time.time()\n", - "biggest = max(range(100000000))\n", - "print(biggest)\n", - "time.time() - start" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideOutput": true - }, - "outputs": [], - "source": [ - "start = time.time()\n", - "# create a max-finding for-loop here\n", - "biggest = 0\n", - "for i in range(100000000):\n", - " if i > biggest:\n", - " biggest = i\n", - "print(i)\n", - "time.time() - start" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideOutput": true - }, - "outputs": [], - "source": [ - "start = time.time()\n", - "# create a 1e8 length numpy array, and find the max\n", - "my_range = np.arange(1e8)\n", - "biggest = my_range.max()\n", - "time.time() - start" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideCode": false, - "hideOutput": true - }, - "outputs": [], - "source": [ - "# ANANSWER\n", - "start = time.time()\n", - "np.arange(1e8).max()\n", - "time.time() - start" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -666,7 +604,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Exercise" + "### Exercise: Array of methods" ] }, { @@ -698,20 +636,6 @@ "outputs": [], "source": [] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "hideCode": false, - "scrolled": true - }, - "outputs": [], - "source": [ - "# ANANSWER\n", - "print(data.mean(axis=0)[:3])\n", - "print(data[:,:3].mean(axis=0))" - ] - }, { "cell_type": "markdown", "metadata": { @@ -1476,7 +1400,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.7.11" }, "livereveal": { "theme": "beige", diff --git a/004-inflammation/Answers.ipynb b/004-inflammation/Answers.ipynb new file mode 100644 index 0000000..f74181e --- /dev/null +++ b/004-inflammation/Answers.ipynb @@ -0,0 +1,117 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4e77a1f6", + "metadata": {}, + "source": [ + "# 004: A New Treatment for Arthritis" + ] + }, + { + "cell_type": "markdown", + "id": "a5b33fe9", + "metadata": {}, + "source": [ + "## Times tables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57f2f337", + "metadata": {}, + "outputs": [], + "source": [ + "start = time.time()\n", + "np.arange(1e8).max()\n", + "time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2571dd9a", + "metadata": {}, + "outputs": [], + "source": [ + "start = time.time()\n", + "biggest = max(range(100000000))\n", + "print(biggest)\n", + "time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ffb627c5", + "metadata": {}, + "outputs": [], + "source": [ + "start = time.time()\n", + "# create a max-finding for-loop here\n", + "biggest = 0\n", + "for i in range(100000000):\n", + " if i > biggest:\n", + " biggest = i\n", + "print(i)\n", + "time.time() - start" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac828523", + "metadata": {}, + "outputs": [], + "source": [ + "start = time.time()\n", + "# create a 1e8 length numpy array, and find the max\n", + "my_range = np.arange(1e8)\n", + "biggest = my_range.max()\n", + "time.time() - start" + ] + }, + { + "cell_type": "markdown", + "id": "71f28fb5", + "metadata": {}, + "source": [ + "## Array of methods" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e43d5427", + "metadata": {}, + "outputs": [], + "source": [ + "# ANANSWER\n", + "print(data.mean(axis=0)[:3])\n", + "print(data[:,:3].mean(axis=0))" + ] + } + ], + "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.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}