Skip to content

Instantly share code, notes, and snippets.

@NithyaSahadevan
Last active January 19, 2019 02:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NithyaSahadevan/1f5be1ff5a89426ef3c237fbf01bddfe to your computer and use it in GitHub Desktop.
Save NithyaSahadevan/1f5be1ff5a89426ef3c237fbf01bddfe to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"http://cocl.us/NotebooksPython101\"><img src = \"https://ibm.box.com/shared/static/yfe6h4az47ktg2mm9h05wby2n7e8kei3.png\" width = 750, align = \"center\"></a>\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src = \"https://ibm.box.com/shared/static/ugcqz6ohbvff804xp84y4kqnvvk3bq1g.png\" width = 300, align = \"center\"></a>\n",
"\n",
"\n",
"\n",
"<h1 align=center><font size = 5>Numpy in Python</font></h1>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import time \n",
"import sys\n",
"import numpy as np \n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def Plotvec1(u,z,v):\n",
" #this function is used in code \n",
" ax = plt.axes()\n",
" ax.arrow(0, 0, *u, head_width=0.05,color ='r', head_length=0.1)\n",
" plt.text(*(u+0.1), 'u')\n",
" \n",
" ax.arrow(0, 0, *v, head_width=0.05,color ='b', head_length=0.1)\n",
" plt.text(*(v+0.1), 'v')\n",
" ax.arrow(0, 0, *z, head_width=0.05, head_length=0.1)\n",
" plt.text(*(z+0.1), 'z')\n",
" plt.ylim(-2,2)\n",
" plt.xlim(-2,2)\n",
"\n",
"\n",
"\n",
"def Plotvec2(a,b):\n",
" #this function is used in code \n",
" ax = plt.axes()\n",
" ax.arrow(0, 0, *a, head_width=0.05,color ='r', head_length=0.1)\n",
" plt.text(*(a+0.1), 'a')\n",
" ax.arrow(0, 0, *b, head_width=0.05,color ='b', head_length=0.1)\n",
" plt.text(*(b+0.1), 'b')\n",
"\n",
" plt.ylim(-2,2)\n",
" plt.xlim(-2,2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you recall, a Python list is a container that allows you to store and access data. We can create a Python List as follows:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"a=[\"0\",1,\"two\",\"3\",4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can access the data via an index:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src = \"https://ibm.box.com/shared/static/myq8bs3maj0g1sqn9yqo910zwparhhtj.png\" width = 660, align = \"center\">\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can access each element using a square bracket as follows: "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"a[0]: 0\n",
"a[1]: 1\n",
"a[2]: two\n",
"a[3]: 3\n",
"a[4]: 4\n"
]
}
],
"source": [
"print(\"a[0]:\",a[0])\n",
"print(\"a[1]:\",a[1])\n",
"print(\"a[2]:\",a[2])\n",
"print(\"a[3]:\",a[3])\n",
"print(\"a[4]:\",a[4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A numpy array is similar to a list, it's usually fixed in size and each element is of the same type. We can cast a list to a numpy array by first importing numpy: "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import numpy as np "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We then cast the list as follows:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a=np.array([0,1,2,3, 4])\n",
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Each element is of the same type, in this case integers: "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src = \"https://ibm.box.com/shared/static/sb97ysreaayf24b8ece1452e8m5e2vol.png\" width = 500, align = \"center\">\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" As with lists, we can access each element via a square bracket:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"a[0]: 0\n",
"a[1]: 1\n",
"a[2]: 2\n",
"a[3]: 3\n",
"a[4]: 4\n"
]
}
],
"source": [
"print(\"a[0]:\",a[0])\n",
"print(\"a[1]:\",a[1])\n",
"print(\"a[2]:\",a[2])\n",
"print(\"a[3]:\",a[3])\n",
"print(\"a[4]:\",a[4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The value of “a” is stored a follows: "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we check the type of the array we get \"numpy.ndarray\":"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(a)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As numpy arrays contain data of the same type, we can use the attribute \"dtype\" to obtain the Data-type of the array’s elements. In this case a 64-bit integer: \n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"dtype('int64')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.dtype"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can create a numpy array with real numbers:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"b=np.array([3.1,11.02,6.2, 213.2,5.2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When we check the type of the array we get \"numpy.ndarray\":"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we examine the attribute \"dtype\" we see float 64, as the elements are not integers: "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"dtype('float64')"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b.dtype"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can change the value of the array, consider the array \"c\":"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([20, 1, 2, 3, 4])"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c=np.array([20,1,2,3,4])\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can change the first element of the array to 100 as follows:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 1, 2, 3, 4])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c[0]=100\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can change the 5th element of the array as follows:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 1, 2, 3, 0])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c[4]=0\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Like lists, we can slice the numpy array, and we can select the elements from 1 to 3 and assign it to a new numpy array 'd' as follows:\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2, 3])"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d=c[1:4]\n",
"d"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can assign the corresponding indexes to new values as follows: "
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 1, 2, 300, 400])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c[3:5]=300,400\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similarly, we can use a list to select a specific index.\n",
"The list ' select ' contains several values:\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"select=[0,2,3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use the list as an argument in the brackets. The output is the elements corresponding to the particular index:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 2, 300])"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d=c[select]\n",
"d"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can assign the specified elements to a new value. For example, we can assign the values to 100 000 as follows:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100000, 1, 100000, 100000, 400])"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c[select]=100000\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's review some basic array attributes using the array ‘a’:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4])"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a=np.array([0,1,2,3, 4])\n",
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The attribute size is the Number of elements in the array:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.size"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The next two attributes will make more sense when we get to higher dimensions but let's review them. The attribute “ndim” represents the Number of array dimensions or the rank of the array, in this case, one:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.ndim"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The attribute “shape” is a tuple of integers indicating the size of the array in each dimension:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(5,)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.shape"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"a=np.array([1,-1,1,-1])"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean=a.mean()\n",
"mean"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"standard_deviation=a.std()\n",
"standard_deviation"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2, 3, 4, 5])"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b=np.array([1,2,3,4,5])\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"max_b=b.max()\n",
"max_b"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"max_b=b.min()\n",
"max_b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Array Addition "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the numpy array 'u':"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0])"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u=np.array([1,0])\n",
"u"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the numpy array 'v':"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1])"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v=np.array([0,1])\n",
"v"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can add the two arrays and assign it to z:"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 1])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"z=u+v\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The operation is equivalent to vector addition:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"Plotvec1(u,z,v)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Implement the following vector subtraction in numpy: u-v "
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1, -1])"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u-v"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <div align=\"right\">\n",
"<a href=\"#1\" class=\"btn btn-default\" data-toggle=\"collapse\">Click here for the solution</a>\n",
"\n",
"</div>\n",
"<div id=\"1\" class=\"collapse\">\n",
"```\n",
"u-v\n",
"```\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the vector numpy array 'y':"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2])"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y=np.array([1,2])\n",
"y"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can multiply every element in the array by 2:"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 4])"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"z=2*y\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" This is equivalent to multiplying a vector by a scaler: "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Multiply the numpy array z with -2:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-4, -8])"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"-2*z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <div align=\"right\">\n",
"<a href=\"#2\" class=\"btn btn-default\" data-toggle=\"collapse\">Click here for the solution</a>\n",
"\n",
"</div>\n",
"<div id=\"2\" class=\"collapse\">\n",
"```\n",
"-2*z\n",
"```\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Product of two numpy arrays "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Consider the following array 'u':"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2])"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u=np.array([1,2])\n",
"u"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Consider the following array 'v':"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([3, 2])"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v=np.array([3,2])\n",
"v"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The product of the two numpy arrays 'u' and 'v' is given by:"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([3, 4])"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"z=u*v\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Consider the list [1,2,3,4,5] and [1,0,1,0,1], and cast both lists to a numpy array then multiply them together:"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0, 3, 0, 5])"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a=np.array([1,2,3,4,5])\n",
"b=np.array([1,0,1,0,1])\n",
"a*b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- \n",
"a=np.array([1,2,3,4,5])\n",
"b=np.array([1,0,1,0,1])\n",
"a*b\n",
" -->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Dot Product"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The dot product of the two numpy arrays 'u' and 'v' is given by:"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.dot(u,v)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Convert the list [-1,1] and [1,1] to numpy arrays 'a' and 'b'. Then, plot the arrays as vectors using the fuction Plotvec2 and find the dot product:"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"the dot product is 0\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAD8CAYAAAB3u9PLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAGxZJREFUeJzt3XmYFeWd9vHv3YAYUAQFlVV0JHElLh2FQAyJ0RHHcZlgxMlCEn0ZtyTOeM3oG6OZOIsmmYkzXG4vUcc1uCUoUQyCiksixsZhFRUkKi0om8EFN+D3/vEU2ran6YZTfep09/25rr666pynz/Ojujn3qaqnnlJEYGZmVlN0AWZmVh0cCGZmBjgQzMws40AwMzPAgWBmZhkHgpmZATkEgqSBkh6WtEjSQkk/KNFGkiZIWiJpnqRDyu3XzMzy1TmH19gAnBcRT0vaEZgtaXpEPNOgzWhgSPZ1OHB19t3MzKpE2XsIEbEiIp7Olt8EFgH9GzU7AbgpkllAT0l9y+3bzMzyk8cewockDQYOBp5s9FR/YFmD9frssRUlXmM8MB6ge/fuh+6zzz55lmhm1q7Nnj17dUT02ZafzS0QJO0A/Bo4NyLeaPx0iR8pOWdGREwEJgLU1tZGXV1dXiWambV7kl7a1p/NZZSRpC6kMLg1In5Tokk9MLDB+gBgeR59m5lZPvIYZSTgOmBRRPyiiWZTgG9lo42GAesi4hOHi8zMrDh5HDIaAXwTmC9pTvbYD4FBABFxDTAVOBZYAqwHvpNDv2ZmlqOyAyEiHqf0OYKGbQI4u9y+zMys9fhKZTMzAxwIZmaWcSCYmRngQDAzs4wDwczMAAeCmZllHAhmZgY4EMzMLONAMDMzwIFgZmYZB4KZmQEOBDMzyzgQzMwMcCCYmVnGgWBmZoADwczMMg4EMzMDHAhmZpbJJRAkXS9ppaQFTTw/StI6SXOyr4vz6NfMzPJT9j2VMzcAVwA3baHNYxFxXE79mZlZznLZQ4iIR4G1ebyWmZkVo5LnEIZLmivpfkn7V7BfMzNrgbwOGTXnaWCPiHhL0rHA3cCQUg0ljQfGAwwaNKhC5ZmZWUX2ECLijYh4K1ueCnSR1LuJthMjojYiavv06VOJ8szMjAoFgqTdJSlbPizrd00l+jYzs5bJ5ZCRpEnAKKC3pHrgx0AXgIi4BhgDnClpA/AOMDYiIo++zcwsH7kEQkSc2szzV5CGpZqZWZXylcpmZgY4EMzMLONAMDMzwIFgZmYZB4KZmQEOBDMzyzgQzMwMcCCYmVnGgWBmZoADwczaiBdffJEDDjig6DLaNQeCmZkBDgRr5MQTT+TQQw9l//33Z+LEiUWXY/YxGzZsYNy4cQwdOpQxY8awfv36oktqVxwI9jHXX389s2fPpq6ujgkTJrBmjWcpt+rx3HPPMX78eObNm0ePHj246qqrii6pXXEg2MdMmDCBz372swwbNoxly5axePHioksy+9DAgQMZMWIEAN/4xjd4/PHHC66ofanULTStDZg5cyYzZszgiSeeoFu3bowaNYp333236LLMPpTdZ6vJdSuP9xDsQ+vWraNXr15069aNZ599llmzZhVdktnHvPzyyzzxxBMATJo0iZEjRxZcUfviQLAPHXPMMWzYsIGhQ4dy0UUXMWzYsKJLMvuYfffdlxtvvJGhQ4eydu1azjzzzKJLaldUzXeyrK2tjbq6uqLLaFtuvhmGDIHDDwfvTlsbFAGPPw6vvAJjxxZdTdsjaXZE1G7Lz3oPoT2JgGuvheHDYfBg+M//hNWri67KrEVeew0uuwwGDIAjjoBbby26oo4nl0CQdL2klZIWNPG8JE2QtETSPEmH5NGvNSLBfffBAQdAfT1cdFH633XccTB9OmzaVHSFZh+zcSNMnQpHHw177AE/+UkKhsMOgzvvLLq6jievUUY3AFcANzXx/GhgSPZ1OHB19t3ytsMOMHMmHHpoCoWNG1NIPPww9OoFy5b5UJJVhQ8+gH794J134O2302NduqQjntOnw/bbF1tfR5TLHkJEPAqs3UKTE4CbIpkF9JTUN4++rYRddoHf/z593/zmv3497LVXsXWZNSClQNgcBjU1sNtu8Oij0KNHsbV1VJU6h9AfWNZgvT577BMkjZdUJ6lu1apVFSmuXerfP52Z69EDPv3p9HHrscfgL/4C3n+/6Oqsg3vnHejTB+bNg113TYeLevVKn2P69Cm6uo6rUoFQ6hhFyeFNETExImojoraP/zLKM2QIrFgBCxem/4FTpsCf/gRdu8JddxVdnXVQN9wA3brBn/8MDz2UzhksXpyOcA4aVHR1HVulrlSuBwY2WB8ALK9Q3x3bpz710fJf/3U6cHvQQXDyySkY1qyB7t2Lq886jD//Oe0FAHzhC+lUV032kbRLl/RlxarUHsIU4FvZaKNhwLqIWFGhvq2hzp1hwYJ0+Oi999JJ6GuuKboqa+d+9rOPwuDpp9N5ghoPeq86uewhSJoEjAJ6S6oHfgx0AYiIa4CpwLHAEmA98J08+rUyjByZRiCNHg1nnpm+Vq9OJ6LNcrJiRTpxDHDKKTBpkge5VbNcAiEiTm3m+QDOzqMvy1FNDUybBvPnw9Ch0Lt3Ggh+8cVFV2btwD/8A1x+eVpevBj23rvYeqx53mkzOPDAdNHauHHw4x+nj3D19UVXZW3UkiXpT+jyy+Hcc9MF9A6DtsGBYImUhn8sXZrWBw6Es84qtCRrWyLg1FPT4DaA5cs/2kOwtsGBYB+3557pf/YFF8DVV6egePbZoquyKve//5uOQN52W5qPKAL6+tLTNseBYKVdemkaIA6w775w0knpf7lZA5s2wRe/CIdks5O9/jqcf36xNdm2cyBY03bdNYXA5ZfD3Xenj4B//GPRVVmVmDkTOnVKQ0ivuy79qfTsWXRVVg4HgjXv3HNh3bq0fPjh6WvjxmJrssJ88EE6T/ClL8FOO6Vpsr773aKrsjw4EKxlevRIHwFvuSXtJXTuDA88UHRVVmG/+Q1st10aSXTPPenq44YXw1vb5kCwrfP1r6d5kXbbDf7yL9NopPfeK7oqa2Xr16cZTr76Vdhnn7SXcPzxRVdleXMg2Nbbfnt49dV0Z5P6+rR+221FV2Wt5Je/TGGwfj088ggsWpR2EK39cSDYths9GjZsgIMPTgPQa2rgzTeLrspysnZtGnU8fjwceWQ6bXTEEUVXZa3JgWDl6dQpzVb2xBPpHEOPHnDllUVXZWX6t3/7aFqruXNhxgxPRtcR+Fds+Rg2LA1K/6u/gnPOSR8tV68uuirbSq+8kn51P/oRfPOb6Vc6dGjRVVmlOBAsPxLce2+6IQ+kW19ddFGxNVmLfe97MGBAWn7hBbjpJs9M2tE4ECx/++2XPlqefjr867+md5WXXy66KmvC88+nX9EVV8A//mM68ufbb3dMDgRrHVIanvLSS2l9jz1SQHj6i6oRAWPGwGc+k9ZffTXdyMY6LgeCta5Bg9I7z49+lOY3qKmBZ54puqoOr64u/Sp+/Wv4j/9Iv6Lddiu6KiuaA8Eq41/+BVatSsv7759OPntvoeI2boThw+Fzn0vr69bBeecVW5NVDweCVU7v3ikErrgiXdRWU5OGq1pFzJiRLiibNSudMN48Sthss1wCQdIxkp6TtETSBSWe/7akVZLmZF+n59GvtVFnn50uYKupgc9/Hg46yJPltaL334fBg+Goo1Imv/NOGlJq1ljZgSCpE3AlMBrYDzhV0n4lmt4eEQdlX9eW26+1cTvskELgttvSlU+dO8P99xddVbtz553QtWs6t3/vvemo3fbbF12VVas89hAOA5ZExNKIeB+4DTghh9e1juCUU+Ddd9MA+GOPTWc233236KravLfeSrOSfu1r6ZbZH3yQTtuYbUkegdAfWNZgvT57rLGvSpon6S5JA5t6MUnjJdVJqlu1+SSktW9du8KyZTBtGqxcmeZTvuWWoqtqs666CnbcMYXA44/DvHmejM5aJo9AKHUtY+PhI78FBkfEUGAGcGNTLxYREyOiNiJq+/Tpk0N51mYcfXSaLO/ww9NBbgneeKPoqtqMNWvSJjv7bDjmmHRt4IgRRVdlbUkegVAPNPzEPwBY3rBBRKyJiM2T5v8SODSHfq096tQpDYPZfKvOnXaC//qvYmtqA/75n9MJY4D589PpGE87YVsrj0B4ChgiaU9J2wFjgSkNG0jq22D1eGBRDv1ae/a5z6WPuCeeCH//9+ndbeXKoquqOsuWpU3zk5+k21hu2gQHHFB0VdZWlR0IEbEBOAeYRnqjvyMiFkq6RNLmeyp9X9JCSXOB7wPfLrdf6wAkmDw53ZEF0gnnCz4xqrlDioAzzkgXggP86U/pQnDvFVg5FFV8tWhtbW3U1dUVXYZVi7POgquvTstLl8KeexZbT0EWLUrzBwL88Ifp3gVmm0maHRG12/KzvlLZ2o6rrkrHSCBNxzluXIea/iIi3cd4cxisXOkwsHw5EKxtGTAgvTNeckmaf6GmJp1FbeeefDL9U3/7W5gwIW0CD8KzvDkQrG266KI0zhLSLb2OOiqdUW1nNm6E2tp0QzpIo3C/971ia7L2y4FgbdfOO6ePytdck2Zu69QpXYnVTkybli4omz0bfvWr9E/dcceiq7L2zIFgbd/f/V2aq6FrV/jCF9L02hs2FF3VNnvvPejXL11c1q9fmsnj1FOLrso6AgeCtQ/du6d3zjvvTDfg6dIlHXBvY371qzT53IoV6eKyV15JOWdWCZ7hxNqXMWPSR+x9901Dcnr1Su+qn/pU0ZVt0ZtvfnRvgtradLF2p07F1mQdj/cQrP3Zbjt44QV48EF4/XXo1g1uuKHoqpo0YcJHYTBrFjz1lMPAiuFAsPbry19Ow3RGjoTvfCddxrtuXdFVfWjVqlTSD36QdmY2bUrz+pkVxYFg7VtNDTz2WLqrPEDPnvDznxdbE3DhhbDrrmn5mWfgnns87YQVz4FgHcOhh6aP4CefDP/0T+nd99VXK17GSy+lrv/939PgqE2b0ukOs2rgQLCOQ4I77oDnn0/rffvCeedVpOuINBvp4MFp/eWX0+UT3iuwauJAsI5nyJD0Dv3978MvfpHelV94odW6W7AgHbn6n/+Biy9OXQ9s8p6BZsVxIFjH9d//nYakAuy9N/zt3+Y6WV4EjB6d7mkMsHp1um+BWbVyIFjH1q9feue+9FKYNCl9lJ8zp+yX/f3v00v97ndpktYI2GWXHOo1a0UOBDNIN95ZuzYtH3wwjBq1TZPlbdiQ5tobOTJdLP3mm3DmmfmWatZaHAhmm/XqlT7KX3stPPJIujrskUda/OP33ZdCYP58uP12eP992GGHVqzXLGcOBLPGTjsN3n47TS06ahR8+tPwwQdNNn/33XSD++OOgz32SDNnfO1rlSvXLC+5BIKkYyQ9J2mJpE/c9FZSV0m3Z88/KWlwHv2atZpu3dLNByZPhsWL03QYd9/9iWY335ymSVqzBqZPhxdfTE3N2qKyJ7eT1Am4EjgKqAeekjQlIp5p0Ow04PWI2FvSWOCnwCnl9m3W6k48MR37OfBAOOmkNKvqypWs+6AbPXumJsOHp4uhPf+QtXV57CEcBiyJiKUR8T5wG3BCozYnADdmy3cBR0q+JMfaiC5d4NlnYeZMePtt5nUf9mEYPPUU/OEPDgNrH/IIhP7Asgbr9dljJdtExAZgHVByEJ6k8ZLqJNWtWrUqh/LMcvLFL8LGjejrX+f8/7OWTZvSVNVm7UUe90Mo9Um/8dU9LWmTHoyYCEwEqK2tze8qIbM81NRw4C3nc1nRdZi1gjz2EOqBhhfiDwCWN9VGUmdgJ2BtDn2bmVlO8giEp4AhkvaUtB0wFpjSqM0UYFy2PAZ4KCLHOQLMzKxsZR8yiogNks4BpgGdgOsjYqGkS4C6iJgCXAfcLGkJac9gbLn9mplZvnK5p3JETAWmNnrs4gbL7wIn59GXmZm1Dl+pbGZmgAPBzMwyDgQzMwMcCGZmlnEgmJkZ4EAwM7OMA8HMzAAHgpmZZRwIZmYGOBDMzCzjQDAzM8CBYGZmGQeCmZkBDgQzM8s4EMzMDHAgmJlZxoFgZmaAA8HMzDJlBYKknSVNl7Q4+96riXYbJc3JvqaU06eZmbWOcvcQLgAejIghwIPZeinvRMRB2dfxZfZpZmatoNxAOAG4MVu+ETixzNczM7OClBsIu0XECoDs+65NtNteUp2kWZK2GBqSxmdt61atWlVmeWZm1lKdm2sgaQawe4mnLtyKfgZFxHJJewEPSZofES+UahgRE4GJALW1tbEVfZiZWRmaDYSI+EpTz0l6TVLfiFghqS+wsonXWJ59XyppJnAwUDIQzMysGOUeMpoCjMuWxwH3NG4gqZekrtlyb2AE8EyZ/ZqZWc7KDYTLgKMkLQaOytaRVCvp2qzNvkCdpLnAw8BlEeFAMDOrMs0eMtqSiFgDHFni8Trg9Gz5D8CB5fRjZmatz1cqm5kZ4EAwM7OMA8HMzAAHgpmZZRwIZmYGOBDMzCzjQDAzM8CBYGZmGQeCmZkBDgQzM8s4EMzMDHAgmJlZxoFgZmaAA8HMzDIOBDMzAxwIZmaWcSCYmRngQDAzs0xZgSDpZEkLJW2SVLuFdsdIek7SEkkXlNOnmZm1jnL3EBYAfwM82lQDSZ2AK4HRwH7AqZL2K7NfMzPLWedyfjgiFgFI2lKzw4AlEbE0a3sbcALwTDl9m5lZvipxDqE/sKzBen32WEmSxkuqk1S3atWqVi/OzMySZvcQJM0Adi/x1IURcU8L+ii1+xBNNY6IicBEgNra2ibbmZlZvpoNhIj4Spl91AMDG6wPAJaX+ZpmZpazShwyegoYImlPSdsBY4EpFejXzMy2QrnDTk+SVA8MB+6TNC17vJ+kqQARsQE4B5gGLALuiIiF5ZVtZmZ5K3eU0WRgconHlwPHNlifCkwtpy8zM2tdvlLZzMwAB4KZmWUcCGZmBjgQzMws40AwMzPAgWBmZhkHgpmZAQ4EMzPLOBDMzAxwIJiZWcaBYGZmgAPBzMwyDgQzMwMcCGZmlnEgmJkZ4EAwM7OMA8HMzAAHgpmZZcq9p/LJkhZK2iSpdgvtXpQ0X9IcSXXl9GlmZq2jrHsqAwuAvwH+XwvafikiVpfZn5mZtZKyAiEiFgFIyqcaMzMrTKXOIQTwgKTZksZXqE8zM9sKze4hSJoB7F7iqQsj4p4W9jMiIpZL2hWYLunZiHi0if7GA+MBBg0a1MKXNzOzcjUbCBHxlXI7iYjl2feVkiYDhwElAyEiJgITAWpra6Pcvs3MrGVa/ZCRpO6Sdty8DBxNOhltZmZVpNxhpydJqgeGA/dJmpY93k/S1KzZbsDjkuYCfwTui4jfldOvmZnlr9xRRpOBySUeXw4cmy0vBT5bTj9mZtb6fKWymZkBDgQzM8s4EMzMDHAgmJlZxoFgZmaAA8HMzDIOBDMzAxwIZmaWcSCYmRngQDAzs4wDwczMAAeCmZllHAhmZgY4EMzMLONAMDMzwIFgZmYZB4KZmQEOBDMzyzgQzMwMKDMQJP1c0rOS5kmaLKlnE+2OkfScpCWSLiinTzMzax3l7iFMBw6IiKHA88D/bdxAUifgSmA0sB9wqqT9yuzXzMxyVlYgRMQDEbEhW50FDCjR7DBgSUQsjYj3gduAE8rp18zM8tc5x9f6LnB7icf7A8sarNcDhzf1IpLGA+Oz1fckLcitwtbRG1hddBEt4Drz5Trz5Trz85lt/cFmA0HSDGD3Ek9dGBH3ZG0uBDYAt5Z6iRKPRVP9RcREYGL2unURUdtcjUVqCzWC68yb68yX68yPpLpt/dlmAyEivtJM5+OA44AjI6LUG309MLDB+gBg+dYUaWZmra/cUUbHAOcDx0fE+iaaPQUMkbSnpO2AscCUcvo1M7P8lTvK6ApgR2C6pDmSrgGQ1E/SVIDspPM5wDRgEXBHRCxs4etPLLO+SmgLNYLrzJvrzJfrzM8216jSR3nMzKyj8ZXKZmYGOBDMzCxTVYHQFqbCkHSypIWSNklqcviZpBclzc/OrWzzMLBttRV1FjqtiKSdJU2XtDj73quJdhuzbTlHUsUGJTS3fSR1lXR79vyTkgZXqrZGdTRX57clrWqwDU8voMbrJa1s6toiJROyf8M8SYdUusasjubqHCVpXYNteXEBNQ6U9LCkRdn/8x+UaLP12zMiquYLOBronC3/FPhpiTadgBeAvYDtgLnAfhWscV/ShR8zgdottHsR6F3gtmy2zqK3ZVbDz4ALsuULSv3Os+feKmAbNrt9gLOAa7LlscDtVVrnt4ErKl1boxqOAA4BFjTx/LHA/aRrl4YBT1ZpnaOAewveln2BQ7LlHUlTBzX+nW/19qyqPYRoA1NhRMSiiHiuUv1tqxbWWQ3TipwA3Jgt3wicWOH+t6Ql26dh/XcBR0oqdTFma6qG32OzIuJRYO0WmpwA3BTJLKCnpL6Vqe4jLaizcBGxIiKezpbfJI3g7N+o2VZvz6oKhEa+S0q3xkpNhdF4Q1SDAB6QNDubjqMaVcO23C0iVkD6Iwd2baLd9pLqJM2SVKnQaMn2+bBN9mFmHbBLRaorUUOmqd/jV7NDB3dJGlji+aJVw99jSw2XNFfS/ZL2L7KQ7DDlwcCTjZ7a6u2Z51xGLVLpqTC2RUtqbIEREbFc0q6k6zSezT555CaHOlt9W8KW69yKlxmUbc+9gIckzY+IF/KpsEkt2T4V2YbNaEkNvwUmRcR7ks4g7dV8udUr2zrVsC1b4mlgj4h4S9KxwN3AkCIKkbQD8Gvg3Ih4o/HTJX5ki9uz4oEQbWAqjOZqbOFrLM++r5Q0mbRbn2sg5FBnRaYV2VKdkl6T1DciVmS7syubeI3N23OppJmkT0StHQgt2T6b29RL6gzsROUPNzRbZ0SsabD6S9I5umrTJqa5afjGGxFTJV0lqXdEVHTSO0ldSGFwa0T8pkSTrd6eVXXISO1kKgxJ3SXtuHmZdLK8GmdtrYZtOQUYly2PAz6xZyOpl6Su2XJvYATwTAVqa8n2aVj/GOChJj7ItKZm62x07Ph40jHnajMF+FY2OmYYsG7z4cRqImn3zeeJJB1Geh9ds+Wfyr0GAdcBiyLiF0002/rtWeSZ8hJnzpeQjnnNyb42j97oB0xtdPb8edInxAsrXONJpOR9D3gNmNa4RtJoj7nZ18JK19jSOovelln/uwAPAouz7ztnj9cC12bLnwfmZ9tzPnBaBev7xPYBLiF9aAHYHrgz+9v9I7BXpbdhC+u8NPtbnAs8DOxTQI2TgBXAB9nf5mnAGcAZ2fMi3Uzrhez33OQovoLrPKfBtpwFfL6AGkeSDv/Ma/B+eWy529NTV5iZGVBlh4zMzKw4DgQzMwMcCGZmlnEgmJkZ4EAwM7OMA8HMzAAHgpmZZf4/wC8P4fc4oW8AAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"a=np.array([-1,1])\n",
"b=np.array([1,1])\n",
"Plotvec2(a,b)\n",
"print(\"the dot product is\",np.dot(a,b) )\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Double-click __here__ for the solution.\n",
"<!-- \n",
"a=np.array([-1,1])\n",
"b=np.array([1,1])\n",
"Plotvec2(a,b)\n",
"print(\"the dot product is\",np.dot(a,b) )\n",
" -->\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Convert the list [1,0] and [0,1] to numpy arrays 'a' and 'b'. Then, plot the arrays as vectors using the function Plotvec2 and find the dot product:\n"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"the dot product is 0\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAD8CAYAAAB3u9PLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAE1JJREFUeJzt3XuM3eV95/H3h4tB3MrNBAfsJlGs5ZL1bmAgpEQrdpNUBFWYFNISNRvTJBolW5RW2j/CLkq6yj/b7EqVikjKThpUskKELq0bd2OuSZAXLaYMFMzFUBzEhpFpMBA5QSYhDt/94zyE6XCOZ+zzm3PG5v2Sjs7v8pzf8+XxMJ/zu06qCkmSDhp3AZKkpcFAkCQBBoIkqTEQJEmAgSBJagwESRLQQSAkWZnk+0m2JnksyR/2aZMk1yTZlmRLkrOG7VeS1K1DOtjGbuA/VtWDSY4GHkhyZ1U9PqvNR4DV7fU+4M/buyRpiRh6D6GqnquqB9v0T4GtwClzmq0Fvlk9m4Fjk6wYtm9JUne62EP4lSTvAN4L3Ddn1SnAs7PmZ9qy5/psYxKYBDjyyCPPPu2007osUZIOaA888MALVbV8Xz7bWSAkOQr4a+CPquonc1f3+UjfZ2ZU1RQwBTAxMVHT09NdlShJB7wk/29fP9vJVUZJDqUXBjdW1d/0aTIDrJw1fyqwvYu+JUnd6OIqowDfALZW1Z8OaLYB+GS72ug8YGdVvelwkSRpfLo4ZHQ+8O+BR5I81Jb9Z2AVQFVdB2wELgK2AbuA3++gX0lSh4YOhKq6h/7nCGa3KeAPhu1LkrR4vFNZkgQYCJKkxkCQJAEGgiSpMRAkSYCBIElqDARJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWoMBEkSYCBIkhoDQZIEGAiSpKaTQEhyfZLnkzw6YP0FSXYmeai9vtRFv5Kk7gz9N5WbvwSuBb65hzb/p6p+q6P+JEkd62QPoao2AS91sS1J0niM8hzC+5M8nOTWJGeOsF9J0gJ0dchoPg8Cv15VLye5CPhbYHW/hkkmgUmAVatWjag8SdJI9hCq6idV9XKb3ggcmuTEAW2nqmqiqiaWL18+ivIkSYwoEJKcnCRt+tzW74uj6FuStDCdHDJKchNwAXBikhngj4FDAarqOuAy4HNJdgOvAJdXVXXRtySpG50EQlV9fJ7119K7LFWStER5p7IkCTAQJEmNgSBJAgwESVJjIEiSAANBktQYCJIkwECQJDUGgiQJMBCkRfPMM8/wnve8Z9xlSAtmIEiSAANBWlS7d+9m3bp1rFmzhssuu4xdu3aNuyRpIANBWkRPPvkkk5OTbNmyhWOOOYavfe1r4y5JGshAkBbRypUrOf/88wH4xCc+wT333DPmiqTBDARpEbW/CzVwXlpKDARpEf3whz/k3nvvBeCmm27iAx/4wJgrkgYzEKS99Hu/B5/73MLann766dxwww2sWbOGl156ic8t9IPSGGQp/yXLiYmJmp6eHncZ0q/8+MewYgUcdBC88AIcccS4K5L+uSQPVNXEvnzWPQRpL9x4Ixx8cO91yy3jrkbqVieBkOT6JM8neXTA+iS5Jsm2JFuSnNVFv9Ko/dmfwa5d8PLLvWnpQNLVHsJfAhfuYf1HgNXtNQn8eUf9SiPzD/8A27e/Mf/447Bt2/jqkbrWSSBU1SbgpT00WQt8s3o2A8cmWdFF39Ko3HYb/OIXb8z/8pdwxx3jq0fq2qjOIZwCPDtrfqYte5Mkk0mmk0zv2LFjJMVJC/H5z8OmTW/Mb9oEn/rU+OqRujaqQOh3N07fy5uqaqqqJqpqYvny5YtclrRwRx4J553Xmz7qqN704YePtyapS6MKhBlg5az5U4HtA9pKksZgVIGwAfhku9roPGBnVT03or4lSQtwSBcbSXITcAFwYpIZ4I+BQwGq6jpgI3ARsA3YBfx+F/1KkrrTSSBU1cfnWV/AH3TRlyRpcXinsiQJMBAkSY2BIEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQaCJAkwECRJjYEgSQIMBElSYyBIkgADQZLUGAiSJMBAkCQ1BoIkCTAQJElNJ4GQ5MIkTybZluSqPuuvSLIjyUPt9Zku+pUkdWfov6mc5GDgq8CHgRng/iQbqurxOU1vrqorh+1PkrQ4uthDOBfYVlVPV9WrwLeAtR1sV5I0Ql0EwinAs7PmZ9qyuS5NsiXJLUlWDtpYkskk00mmd+zY0UF5kqSF6CIQ0mdZzZn/O+AdVbUGuAu4YdDGqmqqqiaqamL58uUdlCdJWoguAmEGmP2N/1Rg++wGVfViVf28zX4dOLuDfiVJHeoiEO4HVid5Z5JlwOXAhtkNkqyYNXsxsLWDfiVJHRr6KqOq2p3kSuB24GDg+qp6LMmXgemq2gB8PsnFwG7gJeCKYfuVJHUrVXMP9y8dExMTNT09Pe4ypH8mgaOOgp/+dNyVSG+W5IGqmtiXz3qnsiQJMBAkSY2BIEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQaCJAkwECRJjYEgab9xySWXcPbZZ3PmmWcyNTU17nIOOEM/3E6SRuX666/n+OOP55VXXuGcc87h0ksv5YQTThh3WQcMA0HSfuOaa65h/fr1ADz77LM89dRTBkKHDARJ+4W7776bu+66i3vvvZcjjjiCCy64gJ/97GfjLuuA4jkESfuFnTt3ctxxx3HEEUfwxBNPsHnz5nGXdMAxECTtFy688EJ2797NmjVr+OIXv8h555037pIOOB4ykrRfOOyww7j11lvHXcYBzT0ESRLQUSAkuTDJk0m2Jbmqz/rDktzc1t+X5B1d9CtJ6s7Qh4ySHAx8FfgwMAPcn2RDVT0+q9mngR9X1buTXA58BfjdYfuWdAD4whfg0UfhnHPgzDPhjDNg9WpYtmzclb3ldHEO4VxgW1U9DZDkW8BaYHYgrAX+S5u+Bbg2SaqqOuhfGqllhxbHvvo8nH7BuEs5MDzxRO/9ttvgyCN706+8AiedBKefDmefDVdfDcccM74a3yK6CIRTgGdnzc8A7xvUpqp2J9kJnAC8MHdjSSaBSYBVq1Z1UJ7UrU1ff5LDr/idN36RqRuvvQa7dvVCYdky+Kd/ggQOOghefXXc1b0ldBEI6bNs7jf/hbTpLayaAqYAJiYm3IPQkvO+dafBui3jLuPAcdll8OCDvcNFsw8bvfvdcOih467uLaWLQJgBVs6aPxXYPqDNTJJDgF8DXuqgb0n7u1tuGXcFarq4yuh+YHWSdyZZBlwObJjTZgOwrk1fBnzP8weStLQMvYfQzglcCdwOHAxcX1WPJfkyMF1VG4BvAP8zyTZ6ewaXD9uvJKlbndypXFUbgY1zln1p1vTPgI910ZckaXF4p7IkCTAQJEmNgSBJAgwESVJjIEiSAANBktQYCJIkwECQJDUGgiQJMBAkSY2BIEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQaCJAkwECRJzVCBkOT4JHcmeaq9Hzeg3S+TPNReG4bpU5K0OIbdQ7gK+G5VrQa+2+b7eaWq/nV7XTxkn5KkRTBsIKwFbmjTNwCXDLk9SdKYDBsIb6uq5wDa+0kD2h2eZDrJ5iR7DI0kk63t9I4dO4YsT5K0UIfM1yDJXcDJfVZdvRf9rKqq7UneBXwvySNV9YN+DatqCpgCmJiYqL3oQ5I0hHkDoao+NGhdkh8lWVFVzyVZATw/YBvb2/vTSe4G3gv0DQRJ0ngMe8hoA7CuTa8Dvj23QZLjkhzWpk8EzgceH7JfSVLHhg2EPwE+nOQp4MNtniQTSf6itTkdmE7yMPB94E+qykCQpCVm3kNGe1JVLwIf7LN8GvhMm/6/wL8cph9J0uLzTmVJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBBoIkqTEQJEmAgSBJagwESRJgIEiSmqECIcnHkjyW5LUkE3tod2GSJ5NsS3LVMH1KkhbHsHsIjwK/DWwa1CDJwcBXgY8AZwAfT3LGkP1Kkjp2yDAfrqqtAEn21OxcYFtVPd3afgtYCzw+TN+SpG6N4hzCKcCzs+Zn2rK+kkwmmU4yvWPHjkUvTpLUM+8eQpK7gJP7rLq6qr69gD767T7UoMZVNQVMAUxMTAxsJ0nq1ryBUFUfGrKPGWDlrPlTge1DblOS1LFRHDK6H1id5J1JlgGXAxtG0K8kaS8Me9npR5PMAO8HvpPk9rb87Uk2AlTVbuBK4HZgK/BXVfXYcGVLkro27FVG64H1fZZvBy6aNb8R2DhMX5KkxeWdypIkwECQJDUGgiQJMBAkSY2BIEkCDARJUmMgSJIAA0GS1BgIkiTAQJAkNQaCJAkwECRJjYEgSQIMBElSYyBIkgADQZLUGAiSJMBAkCQ1w/5N5Y8leSzJa0km9tDumSSPJHkoyfQwfUqSFsdQf1MZeBT4beB/LKDtv62qF4bsT5K0SIYKhKraCpCkm2okSWMzqnMIBdyR5IEkkyPqU5K0F+bdQ0hyF3Byn1VXV9W3F9jP+VW1PclJwJ1JnqiqTQP6mwQmAVatWrXAzUuShjVvIFTVh4btpKq2t/fnk6wHzgX6BkJVTQFTABMTEzVs35KkhVn0Q0ZJjkxy9OvTwG/SOxktSVpChr3s9KNJZoD3A99Jcntb/vYkG1uztwH3JHkY+HvgO1V12zD9SpK6N+xVRuuB9X2WbwcuatNPA/9qmH4kSYvPO5UlSYCBIElqDARJEmAgSJIaA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWoMBEkSYCBIkhoDQZIEGAiSpMZAkCQBBoIkqTEQJEmAgSBJagwESRIwZCAk+e9JnkiyJcn6JMcOaHdhkieTbEty1TB9SpIWx7B7CHcC76mqNcA/Av9pboMkBwNfBT4CnAF8PMkZQ/YrSerYUIFQVXdU1e42uxk4tU+zc4FtVfV0Vb0KfAtYO0y/kqTuHdLhtj4F3Nxn+SnAs7PmZ4D3DdpIkklgss3+PMmjnVW4OE4EXhh3EQtgnd2yzm5ZZ3f+xb5+cN5ASHIXcHKfVVdX1bdbm6uB3cCN/TbRZ1kN6q+qpoCptt3pqpqYr8Zx2h9qBOvsmnV2yzq7k2R6Xz87byBU1Yfm6Xwd8FvAB6uq3y/6GWDlrPlTge17U6QkafENe5XRhcAXgIurateAZvcDq5O8M8ky4HJgwzD9SpK6N+xVRtcCRwN3JnkoyXUASd6eZCNAO+l8JXA7sBX4q6p6bIHbnxqyvlHYH2oE6+yadXbLOruzzzWm/1EeSdJbjXcqS5IAA0GS1CypQNgfHoWR5GNJHkvyWpKBl58leSbJI+3cyj5fBrav9qLOsT5WJMnxSe5M8lR7P25Au1+2sXwoycguSphvfJIcluTmtv6+JO8YVW1z6pivziuS7Jg1hp8ZQ43XJ3l+0L1F6bmm/TdsSXLWqGtsdcxX5wVJds4ayy+NocaVSb6fZGv7//wP+7TZ+/GsqiXzAn4TOKRNfwX4Sp82BwM/AN4FLAMeBs4YYY2n07vx425gYg/tngFOHONYzlvnuMey1fDfgKva9FX9/s3bupfHMIbzjg/wH4Dr2vTlwM1LtM4rgGtHXducGv4NcBbw6ID1FwG30rt36TzgviVa5wXA/x7zWK4AzmrTR9N7dNDcf/O9Hs8ltYdQ+8GjMKpqa1U9Oar+9tUC61wKjxVZC9zQpm8ALhlx/3uykPGZXf8twAeT9LsZczEthX/HeVXVJuClPTRZC3yzejYDxyZZMZrq3rCAOseuqp6rqgfb9E/pXcF5ypxmez2eSyoQ5vgUvXSbq9+jMOYOxFJQwB1JHmiP41iKlsJYvq2qnoPeDzlw0oB2hyeZTrI5yahCYyHj86s27cvMTuCEkVTXp4Zm0L/jpe3QwS1JVvZZP25L4edxod6f5OEktyY5c5yFtMOU7wXum7Nqr8ezy2cZLcioH4WxLxZS4wKcX1Xbk5xE7z6NJ9o3j850UOeijyXsuc692MyqNp7vAr6X5JGq+kE3FQ60kPEZyRjOYyE1/B1wU1X9PMln6e3V/LtFr2zvLIWxXIgHgV+vqpeTXAT8LbB6HIUkOQr4a+CPquonc1f3+cgex3PkgVD7waMw5qtxgdvY3t6fT7Ke3m59p4HQQZ0jeazInupM8qMkK6rqubY7+/yAbbw+nk8nuZveN6LFDoSFjM/rbWaSHAL8GqM/3DBvnVX14qzZr9M7R7fU7BePuZn9i7eqNib5WpITq2qkD71Lcii9MLixqv6mT5O9Hs8ldcgoB8ijMJIcmeTo16fpnSxfik9tXQpjuQFY16bXAW/as0lyXJLD2vSJwPnA4yOobSHjM7v+y4DvDfgis5jmrXPOseOL6R1zXmo2AJ9sV8ecB+x8/XDiUpLk5NfPEyU5l97v0Rf3/KnOawjwDWBrVf3pgGZ7P57jPFPe58z5NnrHvB5qr9ev3ng7sHHO2fN/pPcN8eoR1/hResn7c+BHwO1za6R3tcfD7fXYqGtcaJ3jHsvW/wnAd4Gn2vvxbfkE8Bdt+jeAR9p4PgJ8eoT1vWl8gC/T+9ICcDjwv9rP7t8D7xr1GC6wzv/afhYfBr4PnDaGGm8CngN+0X42Pw18FvhsWx96f0zrB+3feeBVfGOu88pZY7kZ+I0x1PgBeod/tsz6fXnRsOPpoyskScASO2QkSRofA0GSBBgIkqTGQJAkAQaCJKkxECRJgIEgSWr+Pxvio7QMioFfAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"a=np.array([1,0])\n",
"b=np.array([0,1])\n",
"Plotvec2(a,b)\n",
"print(\"the dot product is\",np.dot(a,b) )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- \n",
"a=np.array([1,0])\n",
"b=np.array([0,1])\n",
"Plotvec2(a,b)\n",
"print(\"the dot product is\",np.dot(a,b) )\n",
" -->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Convert the list [1,1] and [0,1] to numpy arrays 'a' and 'b'. Then plot the arrays as vectors using the fuction Plotvec2 and find the dot product:\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"<!-- \n",
"a=np.array([1,1])\n",
"b=np.array([0,1])\n",
"Plotvec2(a,b)\n",
"print(\"the dot product is\",np.dot(a,b) )\n",
"print(\"the dot product is\",np.dot(a,b) )\n",
" -->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Why is the result of the dot product for question 4 and 5 zero, but not zero for question 6? Hint: study the corresponding figures, pay attention to the direction the arrows are pointing to. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Double-click __here__ for the solution.\n",
"<!-- \n",
"```\n",
"The vectors used for question 4 and 5 are perpendicular. As a result, the dot product is zero. -->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Adding Constant to a numpy Array "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the following array: "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"u=np.array([1,2,3,-1]) \n",
"u"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Adding the constant 1 to the array adds 1 to each element in the array:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"u+1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The process is summarised in the following animation:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <img src = \"https://ibm.box.com/shared/static/aqcmsph1r0p5la73p1zw8p9vj01opx3h.gif\" width = 500, align = \"center\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" This part of <a href=\"https://docs.scipy.org/doc/numpy-1.13.0/user/basics.broadcasting.html\" > Broadcasting</a> check out the link for more detail. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Mathematical Functions "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can access the value of pie in numpy as follows :"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"np.pi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can create the following numpy array in Radians:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x=np.array([0,np.pi/2 , np.pi] )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can apply the function \"sine\" to the array 'x' and assign the values to the array 'y'; this applies the sine function to each element in the array: "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"y=np.sin(x)\n",
"y"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Linspace"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" A useful function for plotting mathematical functions is \"linespace\". Linespace returns evenly spaced numbers over a specified interval. We specify the starting point of the sequence and the ending point of the sequence. The parameter \"num\" indicates the Number of samples to generate, in this case 5:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"np.linspace(-2,2,num=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" If we change the parameter **num** to 9, we get 9 evenly spaced numbers over the interval from -2 to 2: "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"np.linspace(-2,2,num=9)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use the function line space to generate 100 evenly spaced samples from the interval 0 to 2 pi: "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x=np.linspace(0,2*np.pi,num=100)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can apply the sine function to each element in the array 'x' and assign it to the array 'y': "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"y=np.sin(x)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"plt.plot(x,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <a href=\"http://cocl.us/NotebooksPython101bottom\"><img src = \"https://ibm.box.com/shared/static/irypdxea2q4th88zu1o1tsd06dya10go.png\" width = 750, align = \"center\"></a>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### About the Authors: \n",
"\n",
" [Joseph Santarcangelo]( https://www.linkedin.com/in/joseph-s-50398b136/) has a PhD in Electrical Engineering, his research focused on using machine learning, signal processing, and computer vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Copyright &copy; 2017 [cognitiveclass.ai](https:cognitiveclass.ai). This notebook and its source code are released under the terms of the [MIT License](cognitiveclass.ai)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"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.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment