Skip to content
Snippets Groups Projects
Commit a2ebafea authored by Vermaat's avatar Vermaat
Browse files

Split numpy and numpy example solutions

parent 2075d633
No related branches found
No related tags found
No related merge requests found
Source diff could not be displayed: it is too large. Options to address this: view the blob.
{
"metadata": {
"name": "",
"signature": "sha256:529709f01c7b40e20a86c385930db05f51411b63e1e28e1d7430b0ad6ac3cab0"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import HTML, Image\n",
"import numpy as np"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"$\\S$ Exercise: Prime number sieve (1/2)\n",
"===\n",
"\n",
"Compute prime numbers in $[0, 99]$, with a sieve."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Image(filename='../images/numpy_prime_sieve.png')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 2,
"text": [
"<IPython.core.display.Image at 0x2ed6490>"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Start with a boolean array `is_prime` of shape `(100,)`, filled with `True`.\n",
"2. Cross out 0 and 1 (i.e., set their index to `False`), which are not prime.\n",
"3. For each integer $i$ starting from 2, cross out its higher multiples.\n",
"4. Skim through the help for `np.nonzero`, and print the prime numbers."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"$\\S$ Exercise: Prime number sieve (2/2)\n",
"===\n",
"\n",
"**Hint:** Use the following approach for step 3 on the previous slide:\n",
"\n",
" max_factor = int(np.sqrt(len(is_prime)))\n",
" for i in range(2, max_factor):\n",
" is_prime[ ... ] = False\n",
"\n",
"Follow-up:\n",
"\n",
"* Move your code into a file named `prime_sieve.py`.\n",
"* Run it to check it works.\n",
"* Use the optimization suggested in the sieve of Eratosthenes:\n",
" - Skip $i$ which are already known to not be primes.\n",
" - The first number to cross out is $i^2$ (if you didn't already)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"$\\S$ Exercise: Prime number sieve (solution)\n",
"===\n",
"\n",
"* Use `ones` to initialize a boolean array with `True` values.\n",
"* Assign to all higher multiples of `i` by slicing with `[2*i::i]`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"is_prime = np.ones((100,), dtype=bool)\n",
"is_prime[:2] = False\n",
"\n",
"max_factor = int(np.sqrt(len(is_prime)))\n",
"for i in range(2, max_factor):\n",
" is_prime[2*i::i] = False\n",
"\n",
"np.nonzero(is_prime)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
"(array([ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,\n",
" 61, 67, 71, 73, 79, 83, 89, 97]),)"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import HTML\n",
"def css_styling():\n",
" styles = open('../styles/custom.css', 'r').read()\n",
" return HTML('<style>' + styles + '</style>')\n",
"css_styling()"
],
"language": "python",
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"html": [
"<style>/* Remove the vertical scrollbar added by nbconvert. */\n",
".reveal {\n",
" overflow: hidden;\n",
"}\n",
"\n",
"/* Workaround some highlight.js bugs in language autodetection. */\n",
"code.objectivec *,\n",
"code.perl *,\n",
"code.cs *,\n",
"code.javascript *,\n",
"code.http * {\n",
" color: black ! important;\n",
" font-weight: normal ! important;\n",
"}\n",
"span.title {\n",
" color: black ! important;\n",
"}\n",
"span.tag {\n",
" color: black ! important;\n",
"}\n",
"span.attribute {\n",
" color: black ! important;\n",
"}\n",
"</style>"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 5,
"text": [
"<IPython.core.display.HTML at 0x30c41d0>"
]
}
],
"prompt_number": 5
}
],
"metadata": {}
}
]
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment