Skip to content

Instantly share code, notes, and snippets.

@aderonkeakinyemi
Created April 16, 2019 08:06
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save aderonkeakinyemi/225a1c9ebddb88692a0a0af0d48bde62 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=\"https://cocl.us/topNotebooksPython101Coursera\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Ad/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://cognitiveclass.ai/\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Ad/CCLog.png\" width=\"200\" align=\"center\">\n",
"</a>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>1D <code>Numpy</code> in Python</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><strong>Welcome!</strong> This notebook will teach you about using <code>Numpy</code> in the Python Programming Language. By the end of this lab, you'll know what <code>Numpy</code> is and the <code>Numpy</code> operations.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Table of Contents</h2>\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <ul>\n",
" <li><a href=\"pre\">Preparation</a></li>\n",
" <li>\n",
" <a href=\"numpy\">What is Numpy?</a>\n",
" <ul>\n",
" <li><a href=\"type\">Type</a></li>\n",
" <li><a href=\"val\">Assign Value</a></li>\n",
" <li><a href=\"slice\">Slicing</a></li>\n",
" <li><a href=\"list\">Assign Value with List</a></li>\n",
" <li><a href=\"other\">Other Attributes</a></li>\n",
" </ul>\n",
" </li>\n",
" <li>\n",
" <a href=\"op\">Numpy Array Operations</a>\n",
" <ul>\n",
" <li><a href=\"add\">Array Addition</a></li>\n",
" <li><a href=\"multi\">Array Multiplication</a></li>\n",
" <li><a href=\"prod\">Product of Two Numpy Arrays</a></li>\n",
" <li><a href=\"dot\">Dot Product</a></li>\n",
" <li><a href=\"cons\">Adding Constant to a Numpy Array</a></li>\n",
" </ul>\n",
" </li>\n",
" <li><a href=\"math\">Mathematical Functions</a></li>\n",
" <li><a href=\"lin\">Linspace</a></li>\n",
" </ul>\n",
" <p>\n",
" Estimated time needed: <strong>30 min</strong>\n",
" </p>\n",
"</div>\n",
"\n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"pre\">Preparation</h2>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Import the libraries\n",
"\n",
"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": [
"# Plotting functions\n",
"\n",
"def Plotvec1(u, z, v):\n",
" \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",
"def Plotvec2(a,b):\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",
" plt.ylim(-2, 2)\n",
" plt.xlim(-2, 2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a Python List as follows:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Create a python list\n",
"\n",
"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://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%205/Images/NumOneList.png\" width=\"660\" />"
]
},
{
"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 each element\n",
"\n",
"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": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"numpy\">What is Numpy?</h2>"
]
},
{
"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 library\n",
"\n",
"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": [
"# Create a numpy array\n",
"\n",
"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://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%205/Images/NumOneNp.png\" width=\"500\" />"
]
},
{
"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 each element\n",
"\n",
"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": [
"<h3 id=\"type\">Type</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we check the type of the array we get <b>numpy.ndarray</b>:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the type of the array\n",
"\n",
"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": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"dtype('int64')"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the type of the values stored in numpy array\n",
"\n",
"a.dtype"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can create a numpy array with real numbers:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Create a numpy array\n",
"\n",
"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 <b>numpy.ndarray</b>:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the type of array\n",
"\n",
"type(b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we examine the attribute <code>dtype</code> we see float 64, as the elements are not integers: "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"dtype('float64')"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the value type\n",
"\n",
"b.dtype"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"val\">Assign value</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can change the value of the array, consider the array <code>c</code>:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([20, 1, 2, 3, 4])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create numpy array\n",
"\n",
"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": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 1, 2, 3, 4])"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Assign the first element to 100\n",
"\n",
"c[0] = 100\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can change the 5th element of the array to 0 as follows:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 1, 2, 3, 0])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Assign the 5th element to 0\n",
"\n",
"c[4] = 0\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"slice\">Slicing</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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 <code>d</code> as follows:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2, 3])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Slicing the numpy array\n",
"\n",
"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": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 1, 2, 300, 400])"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Set the fourth element and fifth element to 300 and 400\n",
"\n",
"c[3:5] = 300, 400\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"list\">Assign Value with List</h3>"
]
},
{
"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": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Create the index list\n",
"\n",
"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": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 2, 300])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Use List to select elements\n",
"\n",
"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": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([100000, 1, 100000, 100000, 400])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Assign the specified elements to new value\n",
"\n",
"c[select] = 100000\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"other\">Other Attributes</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's review some basic array attributes using the array <code>a</code>:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Create a numpy array\n",
"\n",
"a = np.array([0, 1, 2, 3, 4])\n",
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The attribute <code>size</code> is the number of elements in the array:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the size of numpy array\n",
"\n",
"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 <code>ndim</code> represents the number of array dimensions or the rank of the array, in this case, one:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the number of dimensions of numpy array\n",
"\n",
"a.ndim"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The attribute <code>shape</code> is a tuple of integers indicating the size of the array in each dimension:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(5,)"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the shape/size of numpy array\n",
"\n",
"a.shape"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Create a numpy array\n",
"\n",
"a = np.array([1, -1, 1, -1])"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the mean of numpy array\n",
"\n",
"mean = a.mean()\n",
"mean"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"1.0"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the standard deviation of numpy array\n",
"\n",
"standard_deviation=a.std()\n",
"standard_deviation"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-1, 2, 3, 4, 5])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a numpy array\n",
"\n",
"b = np.array([-1, 2, 3, 4, 5])\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"5"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the biggest value in the numpy array\n",
"\n",
"max_b = b.max()\n",
"max_b"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"-1"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the smallest value in the numpy array\n",
"\n",
"min_b = b.min()\n",
"min_b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"op\">Numpy Array Operations</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"add\">Array Addition</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the numpy array <code>u</code>:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0])"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u = np.array([1, 0])\n",
"u"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the numpy array <code>v</code>:"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1])"
]
},
"execution_count": 32,
"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": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 1])"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Numpy Array Addition\n",
"\n",
"z = u + v\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The operation is equivalent to vector addition:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"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": [
"# Plot numpy arrays\n",
"\n",
"Plotvec1(u, z, v)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"multi\">Array Multiplication</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the vector numpy array <code>y</code>:"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2])"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a numpy array\n",
"\n",
"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": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 4])"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Numpy Array Multiplication\n",
"\n",
"z = y * 2\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" This is equivalent to multiplying a vector by a scaler: "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"prod\">Product of Two Numpy Arrays</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the following array <code>u</code>:"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2])"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a numpy array\n",
"\n",
"u = np.array([1, 2])\n",
"u"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the following array <code>v</code>:"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([3, 2])"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a numpy array\n",
"\n",
"v = np.array([3, 2])\n",
"v"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The product of the two numpy arrays <code>u</code> and <code>v</code> is given by:"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([3, 4])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculate the production of two numpy arrays\n",
"\n",
"z = u * v\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"dot\">Dot Product</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The dot product of the two numpy arrays <code>u</code> and <code>v</code> is given by:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculate the dot product\n",
"\n",
"np.dot(u, v)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"cons\">Adding Constant to a Numpy Array</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the following array: "
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1, 2, 3, -1])"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a constant to numpy array\n",
"\n",
"u = np.array([1, 2, 3, -1]) \n",
"u"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Adding the constant 1 to each element in the array:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 3, 4, 0])"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Add the constant to array\n",
"\n",
"u + 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" The process is summarised in the following animation:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%205/Images/NumOneAdd.gif\" width=\"500\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"math\">Mathematical Functions</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can access the value of pie in numpy as follows :"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"3.141592653589793"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# The value of pie\n",
"\n",
"np.pi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can create the following numpy array in Radians:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Create the numpy array in radians\n",
"\n",
"x = np.array([0, np.pi/2 , np.pi])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can apply the function <code>sin</code> to the array <code>x</code> and assign the values to the array <code>y</code>; this applies the sine function to each element in the array: "
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([0.0000000e+00, 1.0000000e+00, 1.2246468e-16])"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculate the sin of each elements\n",
"\n",
"y = np.sin(x)\n",
"y"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"lin\">Linspace</h2>"
]
},
{
"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": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-2., -1., 0., 1., 2.])"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Makeup a numpy array within [-2, 2] and 5 elements\n",
"\n",
"np.linspace(-2, 2, num=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we change the parameter <code>num</code> to 9, we get 9 evenly spaced numbers over the interval from -2 to 2: "
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([-2. , -1.5, -1. , -0.5, 0. , 0.5, 1. , 1.5, 2. ])"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Makeup a numpy array within [-2, 2] and 9 elements\n",
"\n",
"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π: "
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Makeup a numpy array within [0, 2π] and 100 elements \n",
"\n",
"x = np.linspace(0, 2*np.pi, num=100)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can apply the sine function to each element in the array <code>x</code> and assign it to the array <code>y</code>: "
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Calculate the sine of x list\n",
"\n",
"y = np.sin(x)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f5877931550>]"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"# Plot the result\n",
"\n",
"plt.plot(x, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"quiz\">Quiz on 1D Numpy Array</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Implement the following vector subtraction in numpy: u-v"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1, -1])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"\n",
"u = np.array([1, 0])\n",
"v = np.array([0, 1])\n",
"u-v"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Your answer is below:\n",
"u - v\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Multiply the numpy array z with -2:"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-4, -8])"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"\n",
"z = np.array([2, 4])\n",
"z * -2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Your answer is below:\n",
"-2 * z\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Consider the list <code>[1, 2, 3, 4, 5]</code> and <code>[1, 0, 1, 0, 1]</code>, and cast both lists to a numpy array then multiply them together:"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0, 3, 0, 5])"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"one = np.array([1, 2, 3, 4, 5])\n",
"two = np.array([1, 0, 1, 0, 1])\n",
"one * two"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Your answer is below:\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": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Convert the list <code>[-1, 1]</code> and <code>[1, 1]</code> to numpy arrays <code>a</code> and <code>b</code>. Then, plot the arrays as vectors using the fuction <code>Plotvec2</code> and find the dot product:"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute\n",
"a = np.array([-1,1])\n",
"b = np.array([1,1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\n",
"<!-- Your answer is below:\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",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Convert the list <code>[1, 0]</code> and <code>[0, 1]</code> to numpy arrays <code>a</code> and <code>b</code>. Then, plot the arrays as vectors using the function <code>Plotvec2</code> and find the dot product:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\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": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Convert the list <code>[1, 1]</code> and <code>[0, 1]</code> to numpy arrays <code>a</code> and <code>b</code>. Then plot the arrays as vectors using the fuction <code>Plotvec2</code> and find the dot product:"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"# Write your code below and press Shift+Enter to execute\n",
"a = np.array([1, 1])\n",
"b = np.array([0, 1])\n",
"Plotvec2(a,b)\n",
"np.dot(a,b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click __here__ for the solution.\n",
"\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": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Why are the results of the dot product for <code>[-1, 1]</code> and <code>[1, 1]</code> and the dot product for <code>[1, 0]</code> and <code>[0, 1]</code> zero, but not zero for the dot product for <code>[1, 1]</code> and <code>[0, 1]</code>? <p><i>Hint: Study the corresponding figures, pay attention to the direction the arrows are pointing to.</i></p>"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 0 1\n"
]
},
{
"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": [
"# Write your code below and press Shift+Enter to execute\n",
"a = np.array([-1,1])\n",
"b = np.array([1,1])\n",
"c = np.array([1,0])\n",
"d = np.array([0,1])\n",
"\n",
"x = np.dot(a,b)\n",
"#Plotvec2(a,b)\n",
"\n",
"y = np.dot(c,d)\n",
"#Plotvec2(c,d)\n",
"\n",
"z = np.dot(b,d)\n",
"Plotvec2(b,d)\n",
"print(x,y,z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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. \n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<h2>The last exercise!</h2>\n",
"<p>Congratulations, you have completed your first lesson and hands-on lab in Python. However, there is one more thing you need to do. The Data Science community encourages sharing work. The best way to share and showcase your work is to share it on GitHub. By sharing your notebook on GitHub you are not only building your reputation with fellow data scientists, but you can also show it off when applying for a job. Even though this was your first piece of work, it is never too early to start building good habits. So, please read and follow <a href=\"https://cognitiveclass.ai/blog/data-scientists-stand-out-by-sharing-your-notebooks/\" target=\"_blank\">this article</a> to learn how to share your work.\n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"<h2>Get IBM Watson Studio free of charge!</h2>\n",
" <p><a href=\"https://cocl.us/bottemNotebooksPython101Coursera\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Ad/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3> \n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds 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.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Other contributors: <a href=\"www.linkedin.com/in/jiahui-mavis-zhou-a4537814a\">Mavis Zhou</a>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment