Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added a notebook I used to get acquainted with vectorization #7

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
{
"metadata": {
"name": "",
"signature": "sha256:79f6f8d38fa86628294d097bb12e0276d748f4c87e67bc8618a9f14678a01e02"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"import random\n",
"import math\n",
"import numpy as np\n",
"from IPython.display import Image, display \n",
"random.seed(0)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets generate a random array for illustration purposes!"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def generateNoise(width,height):\n",
" noise = [[r for r in range(width)] for i in range(height)]\n",
"\n",
" for i in range(0,height):\n",
" for j in range(0,width):\n",
" noise[i][j] = random.randint(0,9)\n",
"\n",
" return noise\n",
"\n",
"A = generateNoise(30,10)\n",
"A = np.asarray(noise)\n",
"A[A > 1] = 0"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we have an array with ones randomly distributed."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print A"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]\n",
" [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0]\n",
" [0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0]\n",
" [0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1]\n",
" [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0]\n",
" [0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0]\n",
" [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0]\n",
" [0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]\n"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here's an illustration that made the vectorization \"click\" for me. Hopefully it makes sence to somebody else than me."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"display(Image(filename='vectorization.png'))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n2qOJU7LchecAAAAASUVORK5CYII=\n",
"text": [
"<IPython.core.display.Image at 0x107372450>"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In words what we are going to to is to sum all neighouring elements in the array. Let's do it in code!"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"B = np.zeros_like(A) # an array of A's size with only zeros\n",
"\n",
"B[1:-1,1:-1] = A[0:-2, 1:-1] + \\\n",
" A[2:, 1:-1] + \\\n",
" A[1:-1, 0:-2] + \\\n",
" A[1:-1, 2:]\n",
"print B"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]\n",
" [0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 2 0 1 0 0]\n",
" [0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0]\n",
" [0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 0 0 1 2 1 1 1 0 1 0 0 0 0 0]\n",
" [0 0 0 0 0 0 1 1 1 2 0 0 0 1 1 1 0 0 1 1 2 1 0 2 0 1 0 0 1 0]\n",
" [0 0 0 0 0 0 0 2 2 0 1 0 0 0 1 0 0 0 0 1 0 0 2 0 1 0 0 0 0 0]\n",
" [0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0]\n",
" [0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0]\n",
" [0 1 0 1 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0]\n",
" [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]\n"
]
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Se how every element now is the sum of it's neighbours?"
]
}
],
"metadata": {}
}
]
}
Loading