diff --git a/hjw848.ipynb b/hjw848.ipynb new file mode 100644 index 0000000..bc0b1b9 --- /dev/null +++ b/hjw848.ipynb @@ -0,0 +1,275 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IPython version: %6.6s 7.17.0\n" + ] + } + ], + "source": [ + "import IPython\n", + "import json\n", + "# Numpy is a library for working with Arrays\n", + "import numpy as np\n", + "# SciPy implements many different numerical algorithms\n", + "import scipy as sp\n", + "# Pandas is good with data tables\n", + "import pandas as pd\n", + "# Module for plotting\n", + "import matplotlib\n", + "#BeautifulSoup parses HTML documents (once you get them via requests)\n", + "import bs4\n", + "# Nltk helps with some natural language tasks, like stemming\n", + "import nltk\n", + "# Bson is a binary format of json to be stored in databases\n", + "import bson\n", + "# Mongo is one of common nosql databases \n", + "# it stores/searches json documents natively\n", + "import pymongo\n", + "print (\"IPython version: %6.6s\", IPython.__version__)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Make a 2 row x 3 column array of random numbers\n", + "[[0.52769561 0.34104812 0.13374334]\n", + " [0.55065314 0.90728228 0.09169901]]\n", + "Add 5 to every element\n", + "[[5.52769561 5.34104812 5.13374334]\n", + " [5.55065314 5.90728228 5.09169901]]\n", + "Get the first row\n", + "[5.52769561 5.34104812 5.13374334]\n" + ] + } + ], + "source": [ + "#Here is what numpy can do\\n\",\n", + "print (\"Make a 2 row x 3 column array of random numbers\")\n", + "x = np.random.random((2, 3))\n", + "print (x)\n", + "\n", + "#array operation (as in R)\n", + "print (\"Add 5 to every element\")\n", + "x = x + 5\n", + "print (x)\n", + "\n", + "# get a slice (first row) (as in R)\n", + "print (\"Get the first row\")\n", + "print (x[0, :])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# IPython is quite modern: just press at the end of the unfinished statement to see the documentation\n", + "# on possible completions.\n", + "# In the code cell below, type x., to find built-in operations for x\n", + "x.any" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline \n", + "import matplotlib.pyplot as plt\n", + "heads = np.random.binomial(500, .5, size=500)\n", + "histogram = plt.hist(heads, bins=10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# Task 1\n", + "## write a program to produce Fibonacci numbers up to 1000000" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "1\n", + "2\n", + "3\n", + "5\n", + "8\n", + "13\n", + "21\n", + "34\n", + "55\n", + "89\n", + "144\n", + "233\n", + "377\n", + "610\n", + "987\n", + "1597\n", + "2584\n", + "4181\n", + "6765\n", + "10946\n", + "17711\n", + "28657\n", + "46368\n", + "75025\n", + "121393\n", + "196418\n", + "317811\n", + "514229\n", + "832040\n" + ] + } + ], + "source": [ + "def fibonacci(max_fib_number):\n", + " a = 0\n", + " b = 1\n", + " while a <= max_fib_number:\n", + " print(a)\n", + " \n", + " tmp = a\n", + " a = b\n", + " b = tmp + b\n", + " \n", + "fibonacci(1000000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Task 2\n", + "## write a program to simulate 1000 tosses of a fair coin (use np.random.binomial)\n", + "## Calculate the mean and standard deviation of that sample" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean: 0.504\n", + "Standard deviation: 0.4999839997439918\n" + ] + } + ], + "source": [ + "coin_flips = np.random.binomial(1, .5, 1000)\n", + "print('Mean:', np.mean(coin_flips))\n", + "print('Standard deviation:', np.std(coin_flips))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Task 3\n", + "## Produce a scatterplot of y = 0.5*x+e where x has gaussian (0, 5) and e has gaussian (0, 1) distributions \n", + "### use numpy.random.normal to generate gaussian distribution" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = np.random.normal(0, 5, 1000)\n", + "e = np.random.normal(0, 1, 1000)\n", + "plt.scatter(x, 0.5*x + e)\n", + "plt.show()" + ] + } + ], + "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.8.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +}