├── .gitignore ├── LICENSE.txt ├── Python ├── Module1_GettingStartedWithPython │ ├── GettingStartedWithPython.md │ ├── Getting_Started_With_IDEs_and_Notebooks.md │ ├── Informal_Intro_Python.md │ ├── Installing_Python.md │ ├── Jupyter_Notebooks.md │ ├── SiteFormatting.md │ └── attachments │ │ ├── IPythonClip.PNG │ │ ├── PythonShellClip.PNG │ │ ├── ipython_0.PNG │ │ ├── ipython_doc1.PNG │ │ ├── ipython_math.PNG │ │ ├── ipython_string.PNG │ │ ├── jp_docstring.PNG │ │ ├── jp_dropdown.PNG │ │ ├── jp_files.PNG │ │ ├── jupyter_early.png │ │ └── jupyter_login.PNG ├── Module2_EssentialsOfPython │ ├── Basic_Objects.md │ ├── ConditionalStatements.md │ ├── DataStructures.md │ ├── DataStructures_III_Sets_and_More.md │ ├── DataStructures_II_Dictionaries.md │ ├── ForLoops.md │ ├── Functions.md │ ├── Generators_and_Comprehensions.md │ ├── Introduction.md │ ├── Iterables.md │ ├── Itertools.md │ ├── Problems │ │ ├── DifferenceFanout.md │ │ ├── EncodeAsString.md │ │ ├── MarginPercentage.md │ │ └── MergeMaxDicts.md │ ├── Scope.md │ ├── SequenceTypes.md │ ├── Variables_and_Assignment.md │ └── attachments │ │ └── Mem_Consumption_Generator.png ├── Module3_IntroducingNumpy │ ├── AccessingDataAlongMultipleDimensions.md │ ├── AdvancedIndexing.md │ ├── ArrayTraversal.md │ ├── AutoDiff.md │ ├── BasicArrayAttributes.md │ ├── BasicIndexing.md │ ├── Broadcasting.md │ ├── FunctionsForCreatingNumpyArrays.md │ ├── IntroducingTheNDarray.md │ ├── Problems │ │ ├── Approximating_pi.ipynb │ │ ├── ComputeAccuracy.md │ │ └── attachments │ │ │ └── circle_square_small.png │ └── VectorizedOperations.md ├── Module4_OOP │ ├── Applications_of_OOP.md │ ├── Brief_Review.md │ ├── ClassDefinition.md │ ├── ClassInstances.md │ ├── Inheritance.md │ ├── Introduction_to_OOP.md │ ├── Methods.md │ └── Special_Methods.md ├── Module5_OddsAndEnds │ ├── Matplotlib.ipynb │ ├── Modules_and_Packages.md │ ├── WorkingWithFiles.md │ ├── Writing_Good_Code.md │ └── pics │ │ └── pycharm1.png ├── _static │ ├── gtag.js │ └── my_theme.css ├── changes.rst ├── conf.py ├── index.rst ├── intro.rst ├── make.bat ├── module_1.rst ├── module_2.rst ├── module_2_problems.rst ├── module_3.rst ├── module_3_problems.rst ├── module_4.rst └── module_5.rst ├── README.md ├── build_to_doc.py ├── docs ├── .buildinfo ├── .doctrees │ ├── Module1_GettingStartedWithPython │ │ ├── GettingStartedWithPython.doctree │ │ ├── Getting_Started_With_IDEs_and_Notebooks.doctree │ │ ├── Informal_Intro_Python.doctree │ │ ├── Installing_Python.doctree │ │ ├── Jupyter_Notebooks.doctree │ │ └── SiteFormatting.doctree │ ├── Module2_EssentialsOfPython │ │ ├── Basic_Objects.doctree │ │ ├── ConditionalStatements.doctree │ │ ├── DataStructures.doctree │ │ ├── DataStructures_III_Sets_and_More.doctree │ │ ├── DataStructures_II_Dictionaries.doctree │ │ ├── ForLoops.doctree │ │ ├── Functions.doctree │ │ ├── Generators_and_Comprehensions.doctree │ │ ├── Introduction.doctree │ │ ├── Iterables.doctree │ │ ├── Itertools.doctree │ │ ├── Problems │ │ │ ├── DifferenceFanout.doctree │ │ │ ├── EncodeAsString.doctree │ │ │ ├── MarginPercentage.doctree │ │ │ └── MergeMaxDicts.doctree │ │ ├── Scope.doctree │ │ ├── SequenceTypes.doctree │ │ └── Variables_and_Assignment.doctree │ ├── Module3_IntroducingNumpy │ │ ├── AccessingDataAlongMultipleDimensions.doctree │ │ ├── AdvancedIndexing.doctree │ │ ├── ArrayTraversal.doctree │ │ ├── AutoDiff.doctree │ │ ├── BasicArrayAttributes.doctree │ │ ├── BasicIndexing.doctree │ │ ├── Broadcasting.doctree │ │ ├── FunctionsForCreatingNumpyArrays.doctree │ │ ├── IntroducingTheNDarray.doctree │ │ ├── Problems │ │ │ ├── Approximating_pi.doctree │ │ │ └── ComputeAccuracy.doctree │ │ └── VectorizedOperations.doctree │ ├── Module4_OOP │ │ ├── Applications_of_OOP.doctree │ │ ├── Brief_Review.doctree │ │ ├── ClassDefinition.doctree │ │ ├── ClassInstances.doctree │ │ ├── Inheritance.doctree │ │ ├── Introduction_to_OOP.doctree │ │ ├── Methods.doctree │ │ └── Special_Methods.doctree │ ├── Module5_OddsAndEnds │ │ ├── Matplotlib.doctree │ │ ├── Modules_and_Packages.doctree │ │ ├── WorkingWithFiles.doctree │ │ └── Writing_Good_Code.doctree │ ├── changes.doctree │ ├── environment.pickle │ ├── index.doctree │ ├── intro.doctree │ ├── module_1.doctree │ ├── module_2.doctree │ ├── module_2_problems.doctree │ ├── module_3.doctree │ ├── module_3_problems.doctree │ ├── module_4.doctree │ ├── module_5.doctree │ └── nbsphinx │ │ ├── Module1_GettingStartedWithPython │ │ ├── GettingStartedWithPython.ipynb │ │ ├── Getting_Started_With_IDEs_and_Notebooks.ipynb │ │ ├── Informal_Intro_Python.ipynb │ │ ├── Installing_Python.ipynb │ │ ├── Jupyter_Notebooks.ipynb │ │ └── SiteFormatting.ipynb │ │ ├── Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png │ │ ├── Module2_EssentialsOfPython │ │ ├── Basic_Objects.ipynb │ │ ├── ConditionalStatements.ipynb │ │ ├── DataStructures.ipynb │ │ ├── DataStructures_III_Sets_and_More.ipynb │ │ ├── DataStructures_II_Dictionaries.ipynb │ │ ├── ForLoops.ipynb │ │ ├── Functions.ipynb │ │ ├── Generators_and_Comprehensions.ipynb │ │ ├── Introduction.ipynb │ │ ├── Iterables.ipynb │ │ ├── Itertools.ipynb │ │ ├── Problems │ │ │ ├── DifferenceFanout.ipynb │ │ │ ├── EncodeAsString.ipynb │ │ │ ├── MarginPercentage.ipynb │ │ │ └── MergeMaxDicts.ipynb │ │ ├── Scope.ipynb │ │ ├── SequenceTypes.ipynb │ │ └── Variables_and_Assignment.ipynb │ │ ├── Module3_IntroducingNumpy │ │ ├── AccessingDataAlongMultipleDimensions.ipynb │ │ ├── AdvancedIndexing.ipynb │ │ ├── ArrayTraversal.ipynb │ │ ├── AutoDiff.ipynb │ │ ├── BasicArrayAttributes.ipynb │ │ ├── BasicIndexing.ipynb │ │ ├── Broadcasting.ipynb │ │ ├── FunctionsForCreatingNumpyArrays.ipynb │ │ ├── IntroducingTheNDarray.ipynb │ │ ├── Problems │ │ │ ├── Approximating_pi.ipynb │ │ │ └── ComputeAccuracy.ipynb │ │ └── VectorizedOperations.ipynb │ │ ├── Module3_IntroducingNumpy_AutoDiff_14_0.png │ │ ├── Module3_IntroducingNumpy_AutoDiff_23_0.png │ │ ├── Module3_IntroducingNumpy_AutoDiff_25_0.png │ │ ├── Module3_IntroducingNumpy_AutoDiff_27_0.png │ │ ├── Module3_IntroducingNumpy_AutoDiff_29_0.png │ │ ├── Module4_OOP │ │ ├── Applications_of_OOP.ipynb │ │ ├── Brief_Review.ipynb │ │ ├── ClassDefinition.ipynb │ │ ├── ClassInstances.ipynb │ │ ├── Inheritance.ipynb │ │ ├── Introduction_to_OOP.ipynb │ │ ├── Methods.ipynb │ │ └── Special_Methods.ipynb │ │ └── Module5_OddsAndEnds │ │ ├── Matplotlib.ipynb │ │ ├── Modules_and_Packages.ipynb │ │ ├── WorkingWithFiles.ipynb │ │ └── Writing_Good_Code.ipynb ├── .nojekyll ├── CNAME ├── Module1_GettingStartedWithPython │ ├── GettingStartedWithPython.html │ ├── GettingStartedWithPython.ipynb │ ├── Getting_Started_With_IDEs_and_Notebooks.html │ ├── Getting_Started_With_IDEs_and_Notebooks.ipynb │ ├── Informal_Intro_Python.html │ ├── Informal_Intro_Python.ipynb │ ├── Installing_Python.html │ ├── Installing_Python.ipynb │ ├── Jupyter_Notebooks.html │ ├── Jupyter_Notebooks.ipynb │ ├── SiteFormatting.html │ └── SiteFormatting.ipynb ├── Module2_EssentialsOfPython │ ├── Basic_Objects.html │ ├── Basic_Objects.ipynb │ ├── ConditionalStatements.html │ ├── ConditionalStatements.ipynb │ ├── DataStructures.html │ ├── DataStructures.ipynb │ ├── DataStructures_III_Sets_and_More.html │ ├── DataStructures_III_Sets_and_More.ipynb │ ├── DataStructures_II_Dictionaries.html │ ├── DataStructures_II_Dictionaries.ipynb │ ├── ForLoops.html │ ├── ForLoops.ipynb │ ├── Functions.html │ ├── Functions.ipynb │ ├── Generators_and_Comprehensions.html │ ├── Generators_and_Comprehensions.ipynb │ ├── Introduction.html │ ├── Introduction.ipynb │ ├── Iterables.html │ ├── Iterables.ipynb │ ├── Itertools.html │ ├── Itertools.ipynb │ ├── Problems │ │ ├── DifferenceFanout.html │ │ ├── DifferenceFanout.ipynb │ │ ├── EncodeAsString.html │ │ ├── EncodeAsString.ipynb │ │ ├── MarginPercentage.html │ │ ├── MarginPercentage.ipynb │ │ ├── MergeMaxDicts.html │ │ └── MergeMaxDicts.ipynb │ ├── Scope.html │ ├── Scope.ipynb │ ├── SequenceTypes.html │ ├── SequenceTypes.ipynb │ ├── Variables_and_Assignment.html │ └── Variables_and_Assignment.ipynb ├── Module3_IntroducingNumpy │ ├── AccessingDataAlongMultipleDimensions.html │ ├── AccessingDataAlongMultipleDimensions.ipynb │ ├── AdvancedIndexing.html │ ├── AdvancedIndexing.ipynb │ ├── ArrayTraversal.html │ ├── ArrayTraversal.ipynb │ ├── AutoDiff.html │ ├── AutoDiff.ipynb │ ├── BasicArrayAttributes.html │ ├── BasicArrayAttributes.ipynb │ ├── BasicIndexing.html │ ├── BasicIndexing.ipynb │ ├── Broadcasting.html │ ├── Broadcasting.ipynb │ ├── FunctionsForCreatingNumpyArrays.html │ ├── FunctionsForCreatingNumpyArrays.ipynb │ ├── IntroducingTheNDarray.html │ ├── IntroducingTheNDarray.ipynb │ ├── Problems │ │ ├── Approximating_pi.html │ │ ├── Approximating_pi.ipynb │ │ ├── ComputeAccuracy.html │ │ └── ComputeAccuracy.ipynb │ ├── VectorizedOperations.html │ └── VectorizedOperations.ipynb ├── Module4_OOP │ ├── Applications_of_OOP.html │ ├── Applications_of_OOP.ipynb │ ├── Brief_Review.html │ ├── Brief_Review.ipynb │ ├── ClassDefinition.html │ ├── ClassDefinition.ipynb │ ├── ClassInstances.html │ ├── ClassInstances.ipynb │ ├── Inheritance.html │ ├── Inheritance.ipynb │ ├── Introduction_to_OOP.html │ ├── Introduction_to_OOP.ipynb │ ├── Methods.html │ ├── Methods.ipynb │ ├── Special_Methods.html │ └── Special_Methods.ipynb ├── Module5_OddsAndEnds │ ├── Matplotlib.html │ ├── Matplotlib.ipynb │ ├── Modules_and_Packages.html │ ├── Modules_and_Packages.ipynb │ ├── WorkingWithFiles.html │ ├── WorkingWithFiles.ipynb │ ├── Writing_Good_Code.html │ └── Writing_Good_Code.ipynb ├── _images │ ├── Mem_Consumption_Generator.png │ ├── Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_14_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_23_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_25_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_27_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_29_0.png │ ├── circle_square_small.png │ ├── ipython_0.PNG │ ├── ipython_doc1.PNG │ ├── ipython_math.PNG │ ├── ipython_string.PNG │ ├── jp_docstring.PNG │ ├── jp_dropdown.PNG │ ├── jp_files.PNG │ ├── jupyter_early.png │ ├── jupyter_login.PNG │ └── pycharm1.png ├── _sources │ ├── Module1_GettingStartedWithPython │ │ ├── GettingStartedWithPython.md.txt │ │ ├── Getting_Started_With_IDEs_and_Notebooks.md.txt │ │ ├── Informal_Intro_Python.md.txt │ │ ├── Installing_Python.md.txt │ │ ├── Jupyter_Notebooks.md.txt │ │ └── SiteFormatting.md.txt │ ├── Module2_EssentialsOfPython │ │ ├── Basic_Objects.md.txt │ │ ├── ConditionalStatements.md.txt │ │ ├── DataStructures.md.txt │ │ ├── DataStructures_III_Sets_and_More.md.txt │ │ ├── DataStructures_II_Dictionaries.md.txt │ │ ├── ForLoops.md.txt │ │ ├── Functions.md.txt │ │ ├── Generators_and_Comprehensions.md.txt │ │ ├── Introduction.md.txt │ │ ├── Iterables.md.txt │ │ ├── Itertools.md.txt │ │ ├── Problems │ │ │ ├── DifferenceFanout.md.txt │ │ │ ├── EncodeAsString.md.txt │ │ │ ├── MarginPercentage.md.txt │ │ │ └── MergeMaxDicts.md.txt │ │ ├── Scope.md.txt │ │ ├── SequenceTypes.md.txt │ │ └── Variables_and_Assignment.md.txt │ ├── Module3_IntroducingNumpy │ │ ├── AccessingDataAlongMultipleDimensions.md.txt │ │ ├── AdvancedIndexing.md.txt │ │ ├── ArrayTraversal.md.txt │ │ ├── AutoDiff.md.txt │ │ ├── BasicArrayAttributes.md.txt │ │ ├── BasicIndexing.md.txt │ │ ├── Broadcasting.md.txt │ │ ├── FunctionsForCreatingNumpyArrays.md.txt │ │ ├── IntroducingTheNDarray.md.txt │ │ ├── Problems │ │ │ ├── Approximating_pi.ipynb.txt │ │ │ └── ComputeAccuracy.md.txt │ │ └── VectorizedOperations.md.txt │ ├── Module4_OOP │ │ ├── Applications_of_OOP.md.txt │ │ ├── Brief_Review.md.txt │ │ ├── ClassDefinition.md.txt │ │ ├── ClassInstances.md.txt │ │ ├── Inheritance.md.txt │ │ ├── Introduction_to_OOP.md.txt │ │ ├── Methods.md.txt │ │ └── Special_Methods.md.txt │ ├── Module5_OddsAndEnds │ │ ├── Matplotlib.ipynb.txt │ │ ├── Modules_and_Packages.md.txt │ │ ├── WorkingWithFiles.md.txt │ │ └── Writing_Good_Code.md.txt │ ├── changes.rst.txt │ ├── index.rst.txt │ ├── intro.rst.txt │ ├── module_1.rst.txt │ ├── module_2.rst.txt │ ├── module_2_problems.rst.txt │ ├── module_3.rst.txt │ ├── module_3_problems.rst.txt │ ├── module_4.rst.txt │ └── module_5.rst.txt ├── _static │ ├── basic.css │ ├── css │ │ ├── badge_only.css │ │ ├── fonts │ │ │ ├── Roboto-Slab-Bold.woff │ │ │ ├── Roboto-Slab-Bold.woff2 │ │ │ ├── Roboto-Slab-Regular.woff │ │ │ ├── Roboto-Slab-Regular.woff2 │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── fontawesome-webfont.woff2 │ │ │ ├── lato-bold-italic.woff │ │ │ ├── lato-bold-italic.woff2 │ │ │ ├── lato-bold.woff │ │ │ ├── lato-bold.woff2 │ │ │ ├── lato-normal-italic.woff │ │ │ ├── lato-normal-italic.woff2 │ │ │ ├── lato-normal.woff │ │ │ └── lato-normal.woff2 │ │ └── theme.css │ ├── doctools.js │ ├── documentation_options.js │ ├── file.png │ ├── gtag.js │ ├── jquery-3.5.1.js │ ├── jquery.js │ ├── js │ │ ├── badge_only.js │ │ ├── html5shiv-printshiv.min.js │ │ ├── html5shiv.min.js │ │ └── theme.js │ ├── language_data.js │ ├── minus.png │ ├── my_theme.css │ ├── plus.png │ ├── pygments.css │ ├── searchtools.js │ ├── underscore-1.13.1.js │ └── underscore.js ├── changes.html ├── genindex.html ├── index.html ├── intro.html ├── module_1.html ├── module_2.html ├── module_2_problems.html ├── module_3.html ├── module_3_problems.html ├── module_4.html ├── module_5.html ├── objects.inv ├── search.html └── searchindex.js ├── docs_backup ├── .buildinfo ├── .doctrees │ ├── Module1_GettingStartedWithPython │ │ ├── GettingStartedWithPython.doctree │ │ ├── Getting_Started_With_IDEs_and_Notebooks.doctree │ │ ├── Informal_Intro_Python.doctree │ │ ├── Installing_Python.doctree │ │ ├── Jupyter_Notebooks.doctree │ │ └── SiteFormatting.doctree │ ├── Module2_EssentialsOfPython │ │ ├── Basic_Objects.doctree │ │ ├── ConditionalStatements.doctree │ │ ├── DataStructures.doctree │ │ ├── DataStructures_III_Sets_and_More.doctree │ │ ├── DataStructures_II_Dictionaries.doctree │ │ ├── ForLoops.doctree │ │ ├── Functions.doctree │ │ ├── Generators_and_Comprehensions.doctree │ │ ├── Introduction.doctree │ │ ├── Iterables.doctree │ │ ├── Itertools.doctree │ │ ├── Problems │ │ │ ├── DifferenceFanout.doctree │ │ │ ├── EncodeAsString.doctree │ │ │ ├── MarginPercentage.doctree │ │ │ ├── MergeMaxDicts.doctree │ │ │ └── Palindrome.doctree │ │ ├── Scope.doctree │ │ ├── SequenceTypes.doctree │ │ └── Variables_and_Assignment.doctree │ ├── Module3_IntroducingNumpy │ │ ├── AccessingDataAlongMultipleDimensions.doctree │ │ ├── AdvancedIndexing.doctree │ │ ├── ArrayTraversal.doctree │ │ ├── AutoDiff.doctree │ │ ├── BasicArrayAttributes.doctree │ │ ├── BasicIndexing.doctree │ │ ├── Broadcasting.doctree │ │ ├── FunctionsForCreatingNumpyArrays.doctree │ │ ├── IntroducingTheNDarray.doctree │ │ ├── Problems │ │ │ ├── Approximating_pi.doctree │ │ │ └── ComputeAccuracy.doctree │ │ └── VectorizedOperations.doctree │ ├── Module4_OOP │ │ ├── Applications_of_OOP.doctree │ │ ├── Brief_Review.doctree │ │ ├── ClassDefinition.doctree │ │ ├── ClassInstances.doctree │ │ ├── Inheritance.doctree │ │ ├── Introduction_to_OOP.doctree │ │ ├── Methods.doctree │ │ └── Special_Methods.doctree │ ├── Module5_OddsAndEnds │ │ ├── Matplotlib.doctree │ │ ├── Modules_and_Packages.doctree │ │ ├── WorkingWithFiles.doctree │ │ └── Writing_Good_Code.doctree │ ├── changes.doctree │ ├── environment.pickle │ ├── index.doctree │ ├── intro.doctree │ ├── module_1.doctree │ ├── module_2.doctree │ ├── module_2_problems.doctree │ ├── module_3.doctree │ ├── module_3_problems.doctree │ ├── module_4.doctree │ ├── module_5.doctree │ └── nbsphinx │ │ ├── Module1_GettingStartedWithPython │ │ ├── GettingStartedWithPython.ipynb │ │ ├── Getting_Started_With_IDEs_and_Notebooks.ipynb │ │ ├── Informal_Intro_Python.ipynb │ │ ├── Installing_Python.ipynb │ │ ├── Jupyter_Notebooks.ipynb │ │ └── SiteFormatting.ipynb │ │ ├── Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png │ │ ├── Module2_EssentialsOfPython │ │ ├── Basic_Objects.ipynb │ │ ├── ConditionalStatements.ipynb │ │ ├── DataStructures.ipynb │ │ ├── DataStructures_III_Sets_and_More.ipynb │ │ ├── DataStructures_II_Dictionaries.ipynb │ │ ├── ForLoops.ipynb │ │ ├── Functions.ipynb │ │ ├── Generators_and_Comprehensions.ipynb │ │ ├── Introduction.ipynb │ │ ├── Iterables.ipynb │ │ ├── Itertools.ipynb │ │ ├── Problems │ │ │ ├── DifferenceFanout.ipynb │ │ │ ├── EncodeAsString.ipynb │ │ │ ├── MarginPercentage.ipynb │ │ │ ├── MergeMaxDicts.ipynb │ │ │ └── Palindrome.ipynb │ │ ├── Scope.ipynb │ │ ├── SequenceTypes.ipynb │ │ └── Variables_and_Assignment.ipynb │ │ ├── Module3_IntroducingNumpy │ │ ├── AccessingDataAlongMultipleDimensions.ipynb │ │ ├── AdvancedIndexing.ipynb │ │ ├── ArrayTraversal.ipynb │ │ ├── AutoDiff.ipynb │ │ ├── BasicArrayAttributes.ipynb │ │ ├── BasicIndexing.ipynb │ │ ├── Broadcasting.ipynb │ │ ├── FunctionsForCreatingNumpyArrays.ipynb │ │ ├── IntroducingTheNDarray.ipynb │ │ ├── Problems │ │ │ ├── Approximating_pi.ipynb │ │ │ └── ComputeAccuracy.ipynb │ │ └── VectorizedOperations.ipynb │ │ ├── Module3_IntroducingNumpy_AutoDiff_14_0.png │ │ ├── Module3_IntroducingNumpy_AutoDiff_23_0.png │ │ ├── Module3_IntroducingNumpy_AutoDiff_25_0.png │ │ ├── Module3_IntroducingNumpy_AutoDiff_27_0.png │ │ ├── Module3_IntroducingNumpy_AutoDiff_29_0.png │ │ ├── Module4_OOP │ │ ├── Applications_of_OOP.ipynb │ │ ├── Brief_Review.ipynb │ │ ├── ClassDefinition.ipynb │ │ ├── ClassInstances.ipynb │ │ ├── Inheritance.ipynb │ │ ├── Introduction_to_OOP.ipynb │ │ ├── Methods.ipynb │ │ └── Special_Methods.ipynb │ │ └── Module5_OddsAndEnds │ │ ├── Matplotlib.ipynb │ │ ├── Modules_and_Packages.ipynb │ │ ├── WorkingWithFiles.ipynb │ │ └── Writing_Good_Code.ipynb ├── .nojekyll ├── CNAME ├── Module1_GettingStartedWithPython │ ├── GettingStartedWithPython.html │ ├── GettingStartedWithPython.ipynb │ ├── Getting_Started_With_IDEs_and_Notebooks.html │ ├── Getting_Started_With_IDEs_and_Notebooks.ipynb │ ├── Informal_Intro_Python.html │ ├── Informal_Intro_Python.ipynb │ ├── Installing_Python.html │ ├── Installing_Python.ipynb │ ├── Jupyter_Notebooks.html │ ├── Jupyter_Notebooks.ipynb │ ├── SiteFormatting.html │ └── SiteFormatting.ipynb ├── Module2_EssentialsOfPython │ ├── Basic_Objects.html │ ├── Basic_Objects.ipynb │ ├── ConditionalStatements.html │ ├── ConditionalStatements.ipynb │ ├── DataStructures.html │ ├── DataStructures.ipynb │ ├── DataStructures_III_Sets_and_More.html │ ├── DataStructures_III_Sets_and_More.ipynb │ ├── DataStructures_II_Dictionaries.html │ ├── DataStructures_II_Dictionaries.ipynb │ ├── ForLoops.html │ ├── ForLoops.ipynb │ ├── Functions.html │ ├── Functions.ipynb │ ├── Generators_and_Comprehensions.html │ ├── Generators_and_Comprehensions.ipynb │ ├── Introduction.html │ ├── Introduction.ipynb │ ├── Iterables.html │ ├── Iterables.ipynb │ ├── Itertools.html │ ├── Itertools.ipynb │ ├── Problems │ │ ├── DifferenceFanout.html │ │ ├── DifferenceFanout.ipynb │ │ ├── EncodeAsString.html │ │ ├── EncodeAsString.ipynb │ │ ├── MarginPercentage.html │ │ ├── MarginPercentage.ipynb │ │ ├── MergeMaxDicts.html │ │ ├── MergeMaxDicts.ipynb │ │ ├── Palindrome.html │ │ └── Palindrome.ipynb │ ├── Scope.html │ ├── Scope.ipynb │ ├── SequenceTypes.html │ ├── SequenceTypes.ipynb │ ├── Variables_and_Assignment.html │ └── Variables_and_Assignment.ipynb ├── Module3_IntroducingNumpy │ ├── AccessingDataAlongMultipleDimensions.html │ ├── AccessingDataAlongMultipleDimensions.ipynb │ ├── AdvancedIndexing.html │ ├── AdvancedIndexing.ipynb │ ├── ArrayTraversal.html │ ├── ArrayTraversal.ipynb │ ├── AutoDiff.html │ ├── AutoDiff.ipynb │ ├── BasicArrayAttributes.html │ ├── BasicArrayAttributes.ipynb │ ├── BasicIndexing.html │ ├── BasicIndexing.ipynb │ ├── Broadcasting.html │ ├── Broadcasting.ipynb │ ├── FunctionsForCreatingNumpyArrays.html │ ├── FunctionsForCreatingNumpyArrays.ipynb │ ├── IntroducingTheNDarray.html │ ├── IntroducingTheNDarray.ipynb │ ├── Problems │ │ ├── Approximating_pi.html │ │ ├── Approximating_pi.ipynb │ │ ├── ComputeAccuracy.html │ │ └── ComputeAccuracy.ipynb │ ├── VectorizedOperations.html │ └── VectorizedOperations.ipynb ├── Module4_OOP │ ├── Applications_of_OOP.html │ ├── Applications_of_OOP.ipynb │ ├── Brief_Review.html │ ├── Brief_Review.ipynb │ ├── ClassDefinition.html │ ├── ClassDefinition.ipynb │ ├── ClassInstances.html │ ├── ClassInstances.ipynb │ ├── Inheritance.html │ ├── Inheritance.ipynb │ ├── Introduction_to_OOP.html │ ├── Introduction_to_OOP.ipynb │ ├── Methods.html │ ├── Methods.ipynb │ ├── Special_Methods.html │ └── Special_Methods.ipynb ├── Module5_OddsAndEnds │ ├── Matplotlib.html │ ├── Matplotlib.ipynb │ ├── Modules_and_Packages.html │ ├── Modules_and_Packages.ipynb │ ├── WorkingWithFiles.html │ ├── WorkingWithFiles.ipynb │ ├── Writing_Good_Code.html │ └── Writing_Good_Code.ipynb ├── _images │ ├── Mem_Consumption_Generator.png │ ├── Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_14_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_23_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_25_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_27_0.png │ ├── Module3_IntroducingNumpy_AutoDiff_29_0.png │ ├── circle_square_small.png │ ├── ipython_0.PNG │ ├── ipython_doc1.PNG │ ├── ipython_math.PNG │ ├── ipython_string.PNG │ ├── jp_docstring.PNG │ ├── jp_dropdown.PNG │ ├── jp_files.PNG │ ├── jupyter_early.png │ ├── jupyter_login.PNG │ └── pycharm1.png ├── _sources │ ├── Module1_GettingStartedWithPython │ │ ├── GettingStartedWithPython.md.txt │ │ ├── Getting_Started_With_IDEs_and_Notebooks.md.txt │ │ ├── Informal_Intro_Python.md.txt │ │ ├── Installing_Python.md.txt │ │ ├── Jupyter_Notebooks.md.txt │ │ └── SiteFormatting.md.txt │ ├── Module2_EssentialsOfPython │ │ ├── Basic_Objects.md.txt │ │ ├── ConditionalStatements.md.txt │ │ ├── DataStructures.md.txt │ │ ├── DataStructures_III_Sets_and_More.md.txt │ │ ├── DataStructures_II_Dictionaries.md.txt │ │ ├── ForLoops.md.txt │ │ ├── Functions.md.txt │ │ ├── Generators_and_Comprehensions.md.txt │ │ ├── Introduction.md.txt │ │ ├── Iterables.md.txt │ │ ├── Itertools.md.txt │ │ ├── Problems │ │ │ ├── DifferenceFanout.md.txt │ │ │ ├── EncodeAsString.md.txt │ │ │ ├── MarginPercentage.md.txt │ │ │ ├── MergeMaxDicts.md.txt │ │ │ └── Palindrome.md.txt │ │ ├── Scope.md.txt │ │ ├── SequenceTypes.md.txt │ │ └── Variables_and_Assignment.md.txt │ ├── Module3_IntroducingNumpy │ │ ├── AccessingDataAlongMultipleDimensions.md.txt │ │ ├── AdvancedIndexing.md.txt │ │ ├── ArrayTraversal.md.txt │ │ ├── AutoDiff.md.txt │ │ ├── BasicArrayAttributes.md.txt │ │ ├── BasicIndexing.md.txt │ │ ├── Broadcasting.md.txt │ │ ├── FunctionsForCreatingNumpyArrays.md.txt │ │ ├── IntroducingTheNDarray.md.txt │ │ ├── Problems │ │ │ ├── Approximating_pi.ipynb.txt │ │ │ └── ComputeAccuracy.md.txt │ │ └── VectorizedOperations.md.txt │ ├── Module4_OOP │ │ ├── Applications_of_OOP.md.txt │ │ ├── Brief_Review.md.txt │ │ ├── ClassDefinition.md.txt │ │ ├── ClassInstances.md.txt │ │ ├── Inheritance.md.txt │ │ ├── Introduction_to_OOP.md.txt │ │ ├── Methods.md.txt │ │ └── Special_Methods.md.txt │ ├── Module5_OddsAndEnds │ │ ├── Matplotlib.ipynb.txt │ │ ├── Modules_and_Packages.md.txt │ │ ├── WorkingWithFiles.md.txt │ │ └── Writing_Good_Code.md.txt │ ├── changes.rst.txt │ ├── index.rst.txt │ ├── intro.rst.txt │ ├── module_1.rst.txt │ ├── module_2.rst.txt │ ├── module_2_problems.rst.txt │ ├── module_3.rst.txt │ ├── module_3_problems.rst.txt │ ├── module_4.rst.txt │ └── module_5.rst.txt ├── _static │ ├── basic.css │ ├── css │ │ ├── badge_only.css │ │ ├── fonts │ │ │ ├── Roboto-Slab-Bold.woff │ │ │ ├── Roboto-Slab-Bold.woff2 │ │ │ ├── Roboto-Slab-Regular.woff │ │ │ ├── Roboto-Slab-Regular.woff2 │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── fontawesome-webfont.woff2 │ │ │ ├── lato-bold-italic.woff │ │ │ ├── lato-bold-italic.woff2 │ │ │ ├── lato-bold.woff │ │ │ ├── lato-bold.woff2 │ │ │ ├── lato-normal-italic.woff │ │ │ ├── lato-normal-italic.woff2 │ │ │ ├── lato-normal.woff │ │ │ └── lato-normal.woff2 │ │ └── theme.css │ ├── doctools.js │ ├── documentation_options.js │ ├── file.png │ ├── gtag.js │ ├── jquery-3.5.1.js │ ├── jquery.js │ ├── js │ │ ├── badge_only.js │ │ ├── html5shiv-printshiv.min.js │ │ ├── html5shiv.min.js │ │ └── theme.js │ ├── language_data.js │ ├── minus.png │ ├── my_theme.css │ ├── plus.png │ ├── pygments.css │ ├── searchtools.js │ ├── underscore-1.13.1.js │ └── underscore.js ├── changes.html ├── genindex.html ├── index.html ├── intro.html ├── module_1.html ├── module_2.html ├── module_2_problems.html ├── module_3.html ├── module_3_problems.html ├── module_4.html ├── module_5.html ├── objects.inv ├── search.html └── searchindex.js ├── plymi.yml ├── requirements.txt ├── setup.py └── src └── plymi └── __init__.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.ipynb_checkpoints 2 | *.egg-info 3 | __pycache__/* 4 | *~ 5 | .DS_Store 6 | .idea/* 7 | *_build* -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/SiteFormatting.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Overview of formatting in Python Like You Mean It, Difficulty: Easy, Category: Instructions 18 | :keywords: overview, formatting, background, code block, console style 19 | 20 | 21 | 22 | # A Quick Guide to Formatting 23 | This section provides a brief overview of the code formatting style that will be used throughout this text. You are not expected to understand the details of the code, here. This merely provides a guide for what is to come. 24 | 25 | Any code that is included in-line within plain text will be formatted distinctly as so: "the variable `x` was updated...". Such items will be distinguished with backticks wherever such formatting is not available. Take for example the following commented line within Python code: 26 | 27 | ```python 28 | # the variable `x` will be updated 29 | ``` 30 | 31 | Python code will be displayed within distinct, colorized code blocks. These will typically begin with a comment, which is meant to serve as a caption that summarizes the purpose of the code block: 32 | 33 | ```python 34 | # demonstrating a basic for-loop 35 | cnt = 0 36 | for i in range(10): 37 | cnt += 1 38 | 39 | #`cnt` is now 10 40 | ``` 41 | 42 | The symbol `>>>` appears within code blocks to indicate "console-style" code, which distinguishes between code being entered by a user and the resulting output. The purpose of this is that it allows us to easily display the result of a computation without having to rely on calling the `print` function. For instance, the following code assigns the integer `1` to the variable `x`, and then displays the result of `x + 2`: 43 | 44 | ```python 45 | # demonstrating the distinction of 46 | # input and output via >>> 47 | 48 | >>> x = 1 49 | >>> x + 2 50 | 3 51 | ``` 52 | 53 | The code blocks throughout a given section of the text should be understood to be persistent even if there is a mix of "pure" code blocks and "console-style" code blocks. For example, a function may be defined at the beginning of a section, and then referenced throughout the rest of that section: 54 | ```python 55 | # defining an example function 56 | def my_func(x): 57 | return x**2 58 | ``` 59 | 60 | We can spend some time talking about `my_func` and then see it in action: 61 | ```python 62 | # demonstrating `my_func` 63 | >>> my_func(10.) 64 | 100. 65 | ``` 66 | 67 | Lastly, the input and output of an iPython console and a Jupyter notebook alike is displayed as follows: 68 | 69 | ```python 70 | 2 + 3 71 | ``` 72 | 73 | ## Running Code Snippets from this Site 74 | 75 | In PLYMI, we typically precede every code snippet with one or more commented lines. 76 | This is useful because it makes a page more "skimmable", since the code snippets essentially come with 77 | descriptive, self-explanatory captions. 78 | That being said, there is a downside to this. 79 | 80 | Python terminals don't like having multiple comment lines precede an input-prompt. 81 | E.g. if you paste and run the following code into a terminal 82 | 83 | ```python 84 | # demonstrating the distinction of 85 | # input and output via >>> 86 | 87 | >>> x = 1 88 | ``` 89 | 90 | you will get a syntax error. 91 | To fix this issue, simply exclude the comments when you copy this block to your clipboard. 92 | Running 93 | 94 | ```python 95 | >>> x = 1 96 | ``` 97 | 98 | will work without any issue. 99 | Keep this in mind if you ever find yourself having trouble running code that you copied from this site. 100 | 101 | -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/IPythonClip.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/IPythonClip.PNG -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/PythonShellClip.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/PythonShellClip.PNG -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/ipython_0.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/ipython_0.PNG -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/ipython_doc1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/ipython_doc1.PNG -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/ipython_math.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/ipython_math.PNG -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/ipython_string.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/ipython_string.PNG -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/jp_docstring.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/jp_docstring.PNG -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/jp_dropdown.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/jp_dropdown.PNG -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/jp_files.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/jp_files.PNG -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/jupyter_early.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/jupyter_early.png -------------------------------------------------------------------------------- /Python/Module1_GettingStartedWithPython/attachments/jupyter_login.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module1_GettingStartedWithPython/attachments/jupyter_login.PNG -------------------------------------------------------------------------------- /Python/Module2_EssentialsOfPython/attachments/Mem_Consumption_Generator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module2_EssentialsOfPython/attachments/Mem_Consumption_Generator.png -------------------------------------------------------------------------------- /Python/Module3_IntroducingNumpy/BasicArrayAttributes.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Numpy array attributes, Difficulty: Easy, Category: Section 18 | :keywords: ndim, shape, size, itemsize, dtype, examples 19 | 20 | 21 | 22 | # Basic Array Attributes 23 | Armed with our understanding of multidimensional NumPy arrays, we now look at methods for programmatically inspecting an array's attributes (e.g. its dimensionality). It is especially important to understand what an array's "shape" is. 24 | 25 | We will use the following array to provide context for our discussion: 26 | 27 | ```python 28 | >>> import numpy as np 29 | >>> example_array = np.array([[[ 0, 1, 2, 3], 30 | ... [ 4, 5, 6, 7]], 31 | ... 32 | ... [[ 8, 9, 10, 11], 33 | ... [12, 13, 14, 15]], 34 | ... 35 | ... [[16, 17, 18, 19], 36 | ... [20, 21, 22, 23]]]) 37 | ``` 38 | According to the preceding discussion, it is a 3-dimensional array structured such that: 39 | 40 | - axis-0 discerns which of the **3 sheets** to select from. 41 | - axis-1 discerns which of the **2 rows**, in any sheet, to select from. 42 | - axis-2 discerns which of the **4 columns**, in any sheet and row, to select from. 43 | 44 | **ndarray.ndim**: 45 | 46 | The number of axes (dimensions) of the array. 47 | 48 | ```python 49 | # dimensionality of the array 50 | >>> example_array.ndim 51 | 3 52 | ``` 53 | 54 | 55 | 56 | **ndarray.shape**: 57 | 58 | A tuple of integers indicating the number of elements that are stored along each dimension of the array. For a 2D-array with $N$ rows and $M$ columns, shape will be $(N, M)$. The length of this shape-tuple is therefore equal to the number of dimensions of the array. 59 | 60 | ```python 61 | # shape of the array 62 | >>> example_array.shape 63 | (3, 2, 4) 64 | ``` 65 | 66 | **ndarray.size**: 67 | 68 | The total number of elements of the array. This is equal to the product of the elements of the array's shape. 69 | ```python 70 | # size of the array: the number of elements it stores 71 | >>> example_array.size 72 | 24 73 | ``` 74 | 75 | **ndarray.dtype**: 76 | 77 | An object describing the data type of the elements in the array. Recall that NumPy's ND-arrays are *homogeneous*: they can only posses numbers of a uniform data type. 78 | 79 | ```python 80 | # `example_array` contains integers, each of which are stored using 32 bits of memory 81 | >>> example_array.dtype 82 | dtype('int32') 83 | ``` 84 | 85 | **ndarray.itemsize**: 86 | 87 | The size, in bytes (8 bits is 1 byte), of each element of the array. For example, an array of elements of type `float64` has itemsize 8 $(= \frac{64}{8})$, while an array of type `complex32` has itemsize 4 $(= \frac{32}{8})$. 88 | ```python 89 | # each integer in `example_array` is represented using 4 bytes (32 bits) of memory 90 | >>> example_array.itemsize 91 | 4 92 | ``` 93 | 94 | 95 | ## Links to Official Documentation 96 | 97 | - [Array attributes](https://numpy.org/doc/stable/reference/arrays.ndarray.html#array-attributes) 98 | -------------------------------------------------------------------------------- /Python/Module3_IntroducingNumpy/IntroducingTheNDarray.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Introduction to numpy arrays, Difficulty: Easy, Category: Section 18 | :keywords: numpy array, ndarray, introduction, overview 19 | 20 | 21 | 22 | # Introducing the ND-array 23 | It is time to start familiarizing ourselves with NumPy, the premiere library for doing numerical work in Python. To use this package, we need to be sure to "import" the NumPy module into our code: 24 | 25 | ```python 26 | import numpy as np 27 | ``` 28 | 29 | You could have run `import numpy` instead, but the prescribed method allows us to use the abbreviation 'np' throughout our code, instead of having to write 'numpy'. This is a very common abbreviation to use. 30 | 31 | The ND-array (N-dimensional array) is the star of the show for NumPy. This array simply stores a sequence of numbers. Like a Python list, you can access individual entries in this array by "indexing" into the array, and you can access a sub-sequence of the array by "slicing" it. So what distinguishes NumPy's ND-array from a Python list, and why is there a whole numerical library that revolves around this array? There are two major features that makes the ND-array special. It can: 32 | 33 | 1. Provide an interface for its underlying data to be accessed along multiple dimensions. 34 | 2. Rapidly perform mathematical operations over all of its elements, or over patterned subsequences of its elements, using compiled C code instead of Python; this is a process called vectorization. 35 | 36 | Let's take a sneak peek to see what this module has in store. The following code creates an ND-array containing the numbers 0-8: 37 | 38 | ```python 39 | >>> import numpy as np 40 | >>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8]) 41 | ``` 42 | 43 | This object belongs to the NumPy-defined type `numpy.ndarray`. 44 | 45 | ```python 46 | # An ND-array belongs to the type `numpy.ndarray` 47 | >>> type(x) 48 | numpy.ndarray 49 | 50 | >>> isinstance(x, np.ndarray) 51 | True 52 | ``` 53 | 54 | 55 | 56 | We can "reshape" this array so that its contents can be accessed along 2 dimensions: 57 | ```python 58 | >>> x = x.reshape(3,3) 59 | >>> x 60 | array([[0, 1, 2], 61 | [3, 4, 5], 62 | [6, 7, 8]]) 63 | ``` 64 | 65 | We will utilize one of NumPy's "vectorized" functions to square each entry in the array (without us needing to write a for-loop) 66 | ```python 67 | >>> np.power(x, 2) # can also be calculated using the shorthand: x**2 68 | array([[ 0, 1, 4], 69 | [ 9, 16, 25], 70 | [36, 49, 64]], dtype=int32) 71 | ``` 72 | 73 | Let's take the mean value along the three distinct rows of our data: 74 | ```python 75 | >>> np.mean(x, axis=1) 76 | array([ 1., 4., 7.]) 77 | ``` 78 | 79 | We can use broadcasting to raise each column of `x` to a different power: 80 | ```python 81 | >>> x ** np.array([0., 1., 2.]) 82 | array([[ 1., 1., 4.], 83 | [ 1., 4., 25.], 84 | [ 1., 7., 64.]]) 85 | ``` 86 | 87 | Basic indexing allows us to access multi-dimensional slices of `x`: 88 | ```python 89 | >>> x[:2, :3] 90 | array([[0, 1, 2], 91 | [3, 4, 5]]) 92 | ``` 93 | 94 | Advanced indexing can be used to access all even-valued entries of `x`; let's update `x` so that all of its even-valued entries are multiplied by -1: 95 | 96 | ```python 97 | >>> x[x % 2 == 0] *= -1 98 | >>> x 99 | array([[ 0, 1, -2], 100 | [ 3, -4, 5], 101 | [-6, 7, -8]]) 102 | ``` 103 | 104 | By the end of this module, these code snippets should make good sense, and NumPy's tremendous utility should be clear. 105 | 106 | 107 | ## Links to Official Documentation 108 | 109 | - [The N-dimensional array](https://numpy.org/doc/stable/reference/arrays.ndarray.html) 110 | - [NumPy Basics](https://numpy.org/doc/stable/user/basics.html#numpy-basics) 111 | - [NumPy reference](https://numpy.org/doc/stable/reference/index.html) 112 | -------------------------------------------------------------------------------- /Python/Module3_IntroducingNumpy/Problems/attachments/circle_square_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module3_IntroducingNumpy/Problems/attachments/circle_square_small.png -------------------------------------------------------------------------------- /Python/Module4_OOP/Brief_Review.md: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Brief review of object oriented programming, Difficulty: Easy, Category: Tutorial 18 | :keywords: class definition, simple, examples, overview, init, initialize, type, object 19 | 20 | 21 | 22 | ## A Brief Summary of Terms and Concepts 23 | 24 | Let's do a quick rundown of some of the concepts and terms discussed thus far. The following code is a *class definition*, which specifies the *attributes* of objects that belong to the class/type `Example`. 25 | 26 | ```python 27 | class Example: 28 | a = (1, 2, 3) 29 | 30 | def __init__(self): 31 | self.b = "apple" 32 | ``` 33 | 34 | Once executed, this code produces the *class object* `Example`, which encapsulates the above definition and can be used to create objects that are instances of this class/type. `Example.a` and `Example.__init__` are both attributes of this class. `Example.__init__` is more specifically a special method, which is automatically invoked whenever an instance of this class is created. 35 | 36 | The following code creates an *instance* of `Example`, assigning that instance to the variable `ex`. This means that the object belongs to the type (a.k.a class) `Example`. 37 | 38 | ```python 39 | >>> ex = Example() 40 | 41 | >>> Example.a 42 | (1, 2, 3) 43 | 44 | >>> ex.a 45 | (1, 2, 3) 46 | 47 | >>> isinstance(ex, Example) 48 | True 49 | 50 | >>> type(ex) 51 | __main__.Example 52 | ``` 53 | 54 | Upon this instantiation, the instance-level attribute `b` was defined via execution of the `__init__` method, wherein Python passed the instance object being created as the argument `self` to the method. Thus `b` is an *instance-level* attribute, which is not possessed by `Example` itself. 55 | 56 | ```python 57 | >>> Example.b 58 | AttributeError: type object 'Example' has no attribute 'b' 59 | 60 | >>> ex.b 61 | 'apple' 62 | ``` 63 | 64 | 65 | -------------------------------------------------------------------------------- /Python/Module5_OddsAndEnds/pics/pycharm1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/Python/Module5_OddsAndEnds/pics/pycharm1.png -------------------------------------------------------------------------------- /Python/_static/gtag.js: -------------------------------------------------------------------------------- 1 | window.dataLayer = window.dataLayer || []; 2 | function gtag(){dataLayer.push(arguments);} 3 | gtag('js', new Date()); 4 | 5 | gtag('config', 'UA-115029372-1'); 6 | -------------------------------------------------------------------------------- /Python/_static/my_theme.css: -------------------------------------------------------------------------------- 1 | .wy-nav-content { 2 | max-width: 1000px !important; 3 | } 4 | -------------------------------------------------------------------------------- /Python/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=python -msphinx 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | set SPHINXPROJ=BFundamentalsofPython 13 | 14 | if "%1" == "" goto help 15 | 16 | %SPHINXBUILD% >NUL 2>NUL 17 | if errorlevel 9009 ( 18 | echo. 19 | echo.The Sphinx module was not found. Make sure you have Sphinx installed, 20 | echo.then set the SPHINXBUILD environment variable to point to the full 21 | echo.path of the 'sphinx-build' executable. Alternatively you may add the 22 | echo.Sphinx directory to PATH. 23 | echo. 24 | echo.If you don't have Sphinx installed, grab it from 25 | echo.http://sphinx-doc.org/ 26 | exit /b 1 27 | ) 28 | 29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 30 | goto end 31 | 32 | :help 33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 34 | 35 | :end 36 | popd 37 | -------------------------------------------------------------------------------- /Python/module_1.rst: -------------------------------------------------------------------------------- 1 | Module 1: Getting Started with Python 2 | ===================================== 3 | This module introduces the reader to the Python programming language and to some powerful tools for writing and running Python code. We will discuss what Python is, what it means to be a programming language, as well as what happens when you install Python on your computer. 4 | 5 | Next, we will step through the process of installing Python on our computers. Specifically, we will be installing the Anaconda distribution of Python, which includes critical 3rd party libraries and tools that are essential for doing any STEM-related work (e.g. NumPy, matplotlib, and Jupyter). 6 | 7 | Ready or not, it's time to actually write some code! Armed with our fresh install of Python, we will embark on an informal introduction to the language by dabbling with numbers, messing with strings, and playing with lists. This will allow us to begin building an intuition of what Python's syntax generally looks like and what it feels like to write and run Python code. Module 2 is where we will begin a more careful study of the language. 8 | 9 | Lastly, we will take some time to survey some modern tools for writing and editing Python code. This includes the revolutionary Jupyter notebook, which has become a fantastically popular tool for researchers, data scientists, educators, and students alike. Also presented are two of the most powerful integrated development environments (IDEs) for Python: PyCharm and Visual Studio Code. 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | :caption: Contents: 14 | 15 | Module1_GettingStartedWithPython/SiteFormatting.md 16 | Module1_GettingStartedWithPython/GettingStartedWithPython.md 17 | Module1_GettingStartedWithPython/Installing_Python.md 18 | Module1_GettingStartedWithPython/Informal_Intro_Python.md 19 | Module1_GettingStartedWithPython/Jupyter_Notebooks.md 20 | Module1_GettingStartedWithPython/Getting_Started_With_IDEs_and_Notebooks.md 21 | 22 | -------------------------------------------------------------------------------- /Python/module_2.rst: -------------------------------------------------------------------------------- 1 | Module 2: The Essentials of Python 2 | ================================== 3 | This module is designed to introduce you to the essential elements of Python. We will begin by studying the basic types of objects that are built-in to Python, which will enable us to work with numbers, text, and containers that can store a collection of objects. Lists, tuples, and strings all store *sequences* of objects (characters, in the case of strings), as such Python provides a common interface for working with these types; your ability to manipulate sequences of data will be a cornerstone for nearly all STEM work that you do in Python. 4 | 5 | Having introduced Python's basic types of objects and the means for working with sequences, we will formally discuss the process of assigning variables to these objects. It is not uncommon to assign multiple variables to the same object; Python's treatment of multiple "references" to a single object will be resolved here, and in doing so we will distinguish *mutable* objects from *immutable* objects. 6 | 7 | Armed with our growing toolkit of Python objects, and our newfound understanding of how to reference them with variables, we proceed to learn how to control the flow of logic within our code. "if", "else", and "else-if" statements are defined so that we can have branches of code be executed only if user-specified conditions are met (e.g. if a student's grade is below 65, execute code to email that student a warning). "while-loops" and "for-loops" permit us to execute blocks of code repeatedly (e.g. for each student in this list, execute the code to compute that student's average score). These so-called control-flow tools will greatly improve our ability to write useful code. 8 | 9 | Coming off our discussion of for-loops, we take the opportunity to discuss some niceties of the Python language that arise when working with objects that are iterable (e.g. can be iterated over in a for-loop). Niceties is actually an understatement; these tricks of the trade will greatly bolster our ability to write clean, concise, and efficient code. We will pay particular attention to generator comprehension statements, which will allow us to process long sequences of data without having to hold all of the data in memory. You will be glad to have these tricks and tools in your repertoire. 10 | 11 | Returning to a more traditional paradigm of programming languages, we will learn how to define our own functions. This will allow us to encapsulate code for reuse and invoke the code on-demand by "calling" the function that contains that code. Functions enable us to write code that is modular and to construct powerful algorithms by relying on these functions. 12 | 13 | Finally, we will return to our initial endeavor of learning about the various types of objects that are built-in to Python, adding dictionaries, sets, and other types of collections to our inventory. Now that we are much more familiar with the language as a whole, we can concern ourselves with more nuanced, but extremely important matters. This involves discussing the efficiency of the algorithms used under the hood by its different data structures. For example, it will become clear that checking if an object is contained in a set is *much* more efficient than checking for membership in a list. Using the right tool for a given task is of manifest importance. 14 | 15 | Although far from comprehensive, this module will acquaint you with the many of the essential elements of Python, along with the niceties that make the language easy to use. The objective here is to equip the reader with the tools needed to write clear and efficient code, that is particularly effective for data science applications. It is paramount that writing code in Python does not feel like stacking a bunch black boxes together; for this reason, a considerable amount of detail is included here. I hope that a reasonable balance has been struck such that this text is still easy to read and that its key "takeaways" are readily distilled. 16 | 17 | .. toctree:: 18 | :maxdepth: 2 19 | :caption: Contents: 20 | 21 | Module2_EssentialsOfPython/Basic_Objects.md 22 | Module2_EssentialsOfPython/SequenceTypes.md 23 | Module2_EssentialsOfPython/Variables_and_Assignment.md 24 | Module2_EssentialsOfPython/Introduction.md 25 | Module2_EssentialsOfPython/ConditionalStatements.md 26 | Module2_EssentialsOfPython/ForLoops.md 27 | Module2_EssentialsOfPython/Iterables.md 28 | Module2_EssentialsOfPython/Generators_and_Comprehensions.md 29 | Module2_EssentialsOfPython/Itertools.md 30 | Module2_EssentialsOfPython/Functions.md 31 | Module2_EssentialsOfPython/Scope.md 32 | Module2_EssentialsOfPython/DataStructures.md 33 | Module2_EssentialsOfPython/DataStructures_II_Dictionaries.md 34 | Module2_EssentialsOfPython/DataStructures_III_Sets_and_More.md 35 | -------------------------------------------------------------------------------- /Python/module_2_problems.rst: -------------------------------------------------------------------------------- 1 | Module 2: Problems 2 | ================== 3 | This section presents the reader with problems to exercise their understanding of the materials that were presented in the Essentials of Python module. They are meant to be worked through after having read through the module in its entirety. Accompanying each problem is a solution and explanation, which include links to the relevant sections of Python Like You Mean It. The solutions are also designed to emphasize good coding practices. 4 | 5 | These problems were written by former students of mine and PLYMI readers. Have you written a piece of code that would make for a good exercise for a Python user? Consider submitting a problem and solution to be included here! 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | :caption: Contents: 11 | 12 | Module2_EssentialsOfPython/Problems/MergeMaxDicts.md 13 | Module2_EssentialsOfPython/Problems/MarginPercentage.md 14 | Module2_EssentialsOfPython/Problems/DifferenceFanout.md 15 | Module2_EssentialsOfPython/Problems/EncodeAsString.md 16 | 17 | 18 | -------------------------------------------------------------------------------- /Python/module_3.rst: -------------------------------------------------------------------------------- 1 | Module 3: The Essentials of NumPy 2 | ================================== 3 | NumPy is the reason why Python stands among the ranks of R, Matlab, and Julia, as one of the most popular languages for doing STEM-related computing. It is a third-party library (i.e. it is not part of Python's standard library) that facilitates numerical computing in Python by providing users with a versatile N-dimensional array object for storing data, and powerful mathematical functions for operating on those arrays of numbers. NumPy implements its features in ways that are highly optimized, via a process known as vectorization, that enables a degree of computational efficiency that is otherwise unachievable by the Python language. 4 | 5 | The impact that NumPy has had on the landscape of numerical computing in Python is hard to overstate. Whether you are plotting data in matplotlib, analyzing tabular data via `pandas `_ and `xarray `_, using `OpenCV `_ for image and video processing, doing astrophysics research with the help of `astropy `_, or trying out machine learning with `Scikit-Learn `_ and `MyGrad `_, you are using Python libraries that bare the indelible mark of NumPy. At their core, each of these libraries depend on NumPy's N-dimensional array and its efficient vectorization capabilities. NumPy also fundamentally impacts the designs of these libraries and the way that they interface with their users. Thus, one cannot leverage these tools effectively, and cannot do STEM work in Python in general, without having a solid foundation in NumPy. 6 | 7 | This module presents to us the essentials of NumPy. We will first define what the term dimensionality means and will develop an intuition for what zero, one, two, and N-dimensional arrays are, and why they are invaluable for data science applications. Next, we will discuss the ambiguities of array traversal-order and NumPy's default use of row-major ordering. We will then arrive at the critical topic of vectorization, which prescribes the ways in which NumPy dispatches mathematical operations over arrays of numbers. This will also give us keen insight into how NumPy achieves its tremendous computational efficiency. Finally, we will dive into some of NumPy's more advanced features. These include its rules for broadcasting mathematical operations between arrays of different shapes, as well as its mechanisms for accessing and updating an array's contents via basic and advanced indexing. Armed with these techniques, we will be able to write concise and powerful numerical code using NumPy and Python's many other STEM libraries! 8 | 9 | 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | :caption: Contents: 14 | 15 | Module3_IntroducingNumpy/IntroducingTheNDarray.md 16 | Module3_IntroducingNumpy/AccessingDataAlongMultipleDimensions.md 17 | Module3_IntroducingNumpy/BasicArrayAttributes.md 18 | Module3_IntroducingNumpy/FunctionsForCreatingNumpyArrays.md 19 | Module3_IntroducingNumpy/ArrayTraversal.md 20 | Module3_IntroducingNumpy/VectorizedOperations.md 21 | Module3_IntroducingNumpy/Broadcasting.md 22 | Module3_IntroducingNumpy/BasicIndexing.md 23 | Module3_IntroducingNumpy/AdvancedIndexing.md 24 | Module3_IntroducingNumpy/AutoDiff.md 25 | -------------------------------------------------------------------------------- /Python/module_3_problems.rst: -------------------------------------------------------------------------------- 1 | Module 3: Problems 2 | ================== 3 | This section presents the reader with problems to exercise their understanding of the materials that were presented in the Essentials of NumPy module. They are meant to be worked through after having read through the module in its entirety. Accompanying each problem is a solution and explanation, which include links to the relevant sections of Python Like You Mean It. The solutions are also designed to emphasize good coding practices. 4 | 5 | These problems were written by former students of mine and PLYMI readers. Have you written a piece of code that would make for a good exercise for a Python user? Consider submitting a problem and solution to be included here! 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | :caption: Contents: 11 | 12 | Module3_IntroducingNumpy/Problems/ComputeAccuracy.md 13 | Module3_IntroducingNumpy/Problems/Approximating_pi.ipynb 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Python/module_4.rst: -------------------------------------------------------------------------------- 1 | Module 4: Object Oriented Programming 2 | ===================================== 3 | In this module, we will come to see that Python is an object-oriented language. That is, the language is all about defining different types of objects that encapsulate data, and that possess functions that permit users to access and manipulate this data. Our tour through `the essentials of Python `_ and `the essentials of NumPy `_ brought us into contact with various types of objects, such as the :code:`int`, :code:`str`, :code:`list`, :code:`tuple`, :code:`dict`, and the :code:`numpy.ndarray`, to name a few. We have seen that these different types of objects have starkly different functionality from one another. We will study the syntax and constructs for creating and interacting with objects in Python. Ultimately, will find our skill sets as Python-users much fuller and more sophisticated having understood object-oriented programming in Python. 4 | 5 | We begin this module by establishing some key terminology for discussing object-oriented programming, drawing attention to the important fact that the terms 'class' and 'type' mean the same thing in modern Python. Next, we study the syntax for defining a class, and take time to distinguish between the resulting class object and the subsequent class instances that can then be created. Having defined our first custom class of object, we then study the syntax for defining class-methods, which permits us to add customized functionality to our class. Further, we will introduce ourselves to Python's reserved special methods, which empower us to fully interface our class with Python's protocols for behaving like a sequence, an iterable, a function, etc. We conclude this module with a brief discussion of the concept of inheritance, which is a mechanism by which a new class can inherit attributes from an existing class. 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | :caption: Contents: 10 | 11 | Module4_OOP/Introduction_to_OOP.md 12 | Module4_OOP/ClassDefinition.md 13 | Module4_OOP/ClassInstances.md 14 | Module4_OOP/Brief_Review.md 15 | Module4_OOP/Methods.md 16 | Module4_OOP/Applications_of_OOP.md 17 | Module4_OOP/Special_Methods.md 18 | Module4_OOP/Inheritance.md 19 | -------------------------------------------------------------------------------- /Python/module_5.rst: -------------------------------------------------------------------------------- 1 | Module 5: Odds and Ends 2 | ===================================== 3 | This module contains materials that are extraneous to the essentials of Python as a language and of NumPy, but are nonetheless critical to doing day-to-day work using these tools. 4 | 5 | The first section introduces some general guidelines for writing "good code". Specifically, it points you, the reader, to a style guide that many people in the Python community abide by. It also introduces a relatively new and increasingly-popular feature of Python, called type-hinting, which permits us to enhance our code with type-documentation annotations. The reader will also be introduced to NumPy's and Google's respective specifications for writing good docstrings. 6 | 7 | 8 | The second section of this module introduces matplotlib, a library that allows us to plot and visually inspect data. Here, we will specifically learn how to leverage matplotlib's object-oriented API, as opposed to its functional API, for creating scatter plots, line plots, histograms, and image plots. 9 | 10 | The next section presents the "best practices" for working with files in Python. This includes reading from and writing to files within a context manager. We will learn to leverage the powerful :code:`pathlib.Path` class to work with paths in elegant and platform-independent ways. Finally, we review some critical file utilities, like searching for files with :code:`glob`, saving files with :code:`pickle`, and saving NumPy arrays. 11 | 12 | Moving forward, we will study Python's packaging system, which gives us insight into what the :code:`import` statement is all about. This naturally leads us to consider what it actually means to install a Python package on one's machine. We will review the :code:`pip` and :code:`conda` package managers, which are the two prominent means for installing and managing Python packages on one's machine. This is section will be critical for anyone interesting in maturing from a Jupyter notebook-only Python user to someone who can craft their own installable Python project. It will also greatly improve your ability to troubleshoot Python-related technical issues on your machine. 13 | 14 | More sections will be added to this module down the road. 15 | 16 | .. toctree:: 17 | :maxdepth: 2 18 | :caption: Contents: 19 | 20 | Module5_OddsAndEnds/Writing_Good_Code.md 21 | Module5_OddsAndEnds/Matplotlib.ipynb 22 | Module5_OddsAndEnds/WorkingWithFiles.md 23 | Module5_OddsAndEnds/Modules_and_Packages.md 24 | 25 | -------------------------------------------------------------------------------- /build_to_doc.py: -------------------------------------------------------------------------------- 1 | # script for prepping docs/ from new sphinx build 2 | # docs/ -> docs_backup/ 3 | # _build/ -> docs/ 4 | # ensures nojekyll and CNAME are in place 5 | 6 | from pathlib import Path 7 | 8 | from plymi import build_to_doc 9 | build_to_doc(Path(".")) 10 | 11 | -------------------------------------------------------------------------------- /docs/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: d6d4cc67add36a9ae76c4402db05d241 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /docs/.doctrees/Module1_GettingStartedWithPython/GettingStartedWithPython.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module1_GettingStartedWithPython/GettingStartedWithPython.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module1_GettingStartedWithPython/Getting_Started_With_IDEs_and_Notebooks.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module1_GettingStartedWithPython/Getting_Started_With_IDEs_and_Notebooks.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module1_GettingStartedWithPython/Informal_Intro_Python.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module1_GettingStartedWithPython/Informal_Intro_Python.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module1_GettingStartedWithPython/Installing_Python.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module1_GettingStartedWithPython/Installing_Python.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module1_GettingStartedWithPython/Jupyter_Notebooks.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module1_GettingStartedWithPython/Jupyter_Notebooks.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module1_GettingStartedWithPython/SiteFormatting.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module1_GettingStartedWithPython/SiteFormatting.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Basic_Objects.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Basic_Objects.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/ConditionalStatements.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/ConditionalStatements.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/DataStructures.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/DataStructures.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/DataStructures_III_Sets_and_More.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/DataStructures_III_Sets_and_More.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/DataStructures_II_Dictionaries.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/DataStructures_II_Dictionaries.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/ForLoops.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/ForLoops.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Functions.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Functions.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Generators_and_Comprehensions.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Generators_and_Comprehensions.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Introduction.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Introduction.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Iterables.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Iterables.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Itertools.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Itertools.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Problems/DifferenceFanout.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Problems/DifferenceFanout.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Problems/EncodeAsString.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Problems/EncodeAsString.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Problems/MarginPercentage.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Problems/MarginPercentage.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Problems/MergeMaxDicts.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Problems/MergeMaxDicts.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Scope.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Scope.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/SequenceTypes.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/SequenceTypes.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module2_EssentialsOfPython/Variables_and_Assignment.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module2_EssentialsOfPython/Variables_and_Assignment.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/AccessingDataAlongMultipleDimensions.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/AccessingDataAlongMultipleDimensions.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/AdvancedIndexing.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/AdvancedIndexing.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/ArrayTraversal.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/ArrayTraversal.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/AutoDiff.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/AutoDiff.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/BasicArrayAttributes.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/BasicArrayAttributes.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/BasicIndexing.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/BasicIndexing.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/Broadcasting.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/Broadcasting.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/FunctionsForCreatingNumpyArrays.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/FunctionsForCreatingNumpyArrays.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/IntroducingTheNDarray.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/IntroducingTheNDarray.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/Problems/Approximating_pi.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/Problems/Approximating_pi.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/Problems/ComputeAccuracy.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/Problems/ComputeAccuracy.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module3_IntroducingNumpy/VectorizedOperations.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module3_IntroducingNumpy/VectorizedOperations.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module4_OOP/Applications_of_OOP.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module4_OOP/Applications_of_OOP.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module4_OOP/Brief_Review.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module4_OOP/Brief_Review.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module4_OOP/ClassDefinition.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module4_OOP/ClassDefinition.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module4_OOP/ClassInstances.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module4_OOP/ClassInstances.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module4_OOP/Inheritance.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module4_OOP/Inheritance.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module4_OOP/Introduction_to_OOP.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module4_OOP/Introduction_to_OOP.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module4_OOP/Methods.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module4_OOP/Methods.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module4_OOP/Special_Methods.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module4_OOP/Special_Methods.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module5_OddsAndEnds/Matplotlib.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module5_OddsAndEnds/Matplotlib.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module5_OddsAndEnds/Modules_and_Packages.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module5_OddsAndEnds/Modules_and_Packages.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module5_OddsAndEnds/WorkingWithFiles.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module5_OddsAndEnds/WorkingWithFiles.doctree -------------------------------------------------------------------------------- /docs/.doctrees/Module5_OddsAndEnds/Writing_Good_Code.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/Module5_OddsAndEnds/Writing_Good_Code.doctree -------------------------------------------------------------------------------- /docs/.doctrees/changes.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/changes.doctree -------------------------------------------------------------------------------- /docs/.doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/environment.pickle -------------------------------------------------------------------------------- /docs/.doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/index.doctree -------------------------------------------------------------------------------- /docs/.doctrees/intro.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/intro.doctree -------------------------------------------------------------------------------- /docs/.doctrees/module_1.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/module_1.doctree -------------------------------------------------------------------------------- /docs/.doctrees/module_2.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/module_2.doctree -------------------------------------------------------------------------------- /docs/.doctrees/module_2_problems.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/module_2_problems.doctree -------------------------------------------------------------------------------- /docs/.doctrees/module_3.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/module_3.doctree -------------------------------------------------------------------------------- /docs/.doctrees/module_3_problems.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/module_3_problems.doctree -------------------------------------------------------------------------------- /docs/.doctrees/module_4.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/module_4.doctree -------------------------------------------------------------------------------- /docs/.doctrees/module_5.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/module_5.doctree -------------------------------------------------------------------------------- /docs/.doctrees/nbsphinx/Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/nbsphinx/Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png -------------------------------------------------------------------------------- /docs/.doctrees/nbsphinx/Module3_IntroducingNumpy/BasicArrayAttributes.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "metadata": { 6 | "raw_mimetype": "text/restructuredtext" 7 | }, 8 | "source": [ 9 | ".. meta::\n", 10 | " :description: Topic: Numpy array attributes, Difficulty: Easy, Category: Section\n", 11 | " :keywords: ndim, shape, size, itemsize, dtype, examples" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "# Basic Array Attributes\n", 19 | "Armed with our understanding of multidimensional NumPy arrays, we now look at methods for programmatically inspecting an array's attributes (e.g. its dimensionality). It is especially important to understand what an array's \"shape\" is.\n", 20 | "\n", 21 | "We will use the following array to provide context for our discussion:\n", 22 | " \n", 23 | "```python\n", 24 | ">>> import numpy as np\n", 25 | ">>> example_array = np.array([[[ 0, 1, 2, 3],\n", 26 | "... [ 4, 5, 6, 7]],\n", 27 | "...\n", 28 | "... [[ 8, 9, 10, 11],\n", 29 | "... [12, 13, 14, 15]],\n", 30 | "...\n", 31 | "... [[16, 17, 18, 19],\n", 32 | "... [20, 21, 22, 23]]])\n", 33 | "```\n", 34 | "According to the preceding discussion, it is a 3-dimensional array structured such that:\n", 35 | "\n", 36 | " - axis-0 discerns which of the **3 sheets** to select from.\n", 37 | " - axis-1 discerns which of the **2 rows**, in any sheet, to select from.\n", 38 | " - axis-2 discerns which of the **4 columns**, in any sheet and row, to select from.\n", 39 | "\n", 40 | "**ndarray.ndim**: \n", 41 | "\n", 42 | "The number of axes (dimensions) of the array.\n", 43 | "\n", 44 | "```python\n", 45 | "# dimensionality of the array\n", 46 | ">>> example_array.ndim\n", 47 | "3\n", 48 | "```" 49 | ] 50 | }, 51 | { 52 | "cell_type": "markdown", 53 | "metadata": {}, 54 | "source": [ 55 | "**ndarray.shape**:\n", 56 | "\n", 57 | "A tuple of integers indicating the number of elements that are stored along each dimension of the array. For a 2D-array with $N$ rows and $M$ columns, shape will be $(N, M)$. The length of this shape-tuple is therefore equal to the number of dimensions of the array.\n", 58 | "\n", 59 | "```python\n", 60 | "# shape of the array\n", 61 | ">>> example_array.shape\n", 62 | "(3, 2, 4)\n", 63 | "```\n", 64 | "\n", 65 | "**ndarray.size**:\n", 66 | "\n", 67 | "The total number of elements of the array. This is equal to the product of the elements of the array's shape.\n", 68 | "```python\n", 69 | "# size of the array: the number of elements it stores\n", 70 | ">>> example_array.size\n", 71 | "24\n", 72 | "```\n", 73 | "\n", 74 | "**ndarray.dtype**:\n", 75 | "\n", 76 | "An object describing the data type of the elements in the array. Recall that NumPy's ND-arrays are *homogeneous*: they can only posses numbers of a uniform data type. \n", 77 | "\n", 78 | "```python\n", 79 | "# `example_array` contains integers, each of which are stored using 32 bits of memory\n", 80 | ">>> example_array.dtype\n", 81 | "dtype('int32') \n", 82 | "```\n", 83 | "\n", 84 | "**ndarray.itemsize**:\n", 85 | "\n", 86 | "The size, in bytes (8 bits is 1 byte), of each element of the array. For example, an array of elements of type `float64` has itemsize 8 $(= \\frac{64}{8})$, while an array of type `complex32` has itemsize 4 $(= \\frac{32}{8})$.\n", 87 | "```python\n", 88 | "# each integer in `example_array` is represented using 4 bytes (32 bits) of memory\n", 89 | ">>> example_array.itemsize\n", 90 | "4\n", 91 | "```" 92 | ] 93 | }, 94 | { 95 | "cell_type": "markdown", 96 | "metadata": {}, 97 | "source": [ 98 | "## Links to Official Documentation\n", 99 | "\n", 100 | "- [Array attributes](https://numpy.org/doc/stable/reference/arrays.ndarray.html#array-attributes)" 101 | ] 102 | } 103 | ], 104 | "metadata": { 105 | "jupytext": { 106 | "text_representation": { 107 | "extension": ".md", 108 | "format_name": "markdown", 109 | "format_version": "1.3", 110 | "jupytext_version": "1.13.6" 111 | } 112 | }, 113 | "kernelspec": { 114 | "display_name": "Python 3", 115 | "language": "python", 116 | "name": "python3" 117 | } 118 | }, 119 | "nbformat": 4, 120 | "nbformat_minor": 4 121 | } 122 | -------------------------------------------------------------------------------- /docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_14_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_14_0.png -------------------------------------------------------------------------------- /docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_23_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_23_0.png -------------------------------------------------------------------------------- /docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_25_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_25_0.png -------------------------------------------------------------------------------- /docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_27_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_27_0.png -------------------------------------------------------------------------------- /docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_29_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_29_0.png -------------------------------------------------------------------------------- /docs/.doctrees/nbsphinx/Module4_OOP/Brief_Review.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "metadata": { 6 | "raw_mimetype": "text/restructuredtext" 7 | }, 8 | "source": [ 9 | ".. meta::\n", 10 | " :description: Topic: Brief review of object oriented programming, Difficulty: Easy, Category: Tutorial\n", 11 | " :keywords: class definition, simple, examples, overview, init, initialize, type, object" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "## A Brief Summary of Terms and Concepts\n", 19 | "\n", 20 | "Let's do a quick rundown of some of the concepts and terms discussed thus far. The following code is a *class definition*, which specifies the *attributes* of objects that belong to the class/type `Example`.\n", 21 | "\n", 22 | "```python\n", 23 | "class Example:\n", 24 | " a = (1, 2, 3)\n", 25 | " \n", 26 | " def __init__(self):\n", 27 | " self.b = \"apple\"\n", 28 | "```\n", 29 | "\n", 30 | "Once executed, this code produces the *class object* `Example`, which encapsulates the above definition and can be used to create objects that are instances of this class/type. `Example.a` and `Example.__init__` are both attributes of this class. `Example.__init__` is more specifically a special method, which is automatically invoked whenever an instance of this class is created. \n", 31 | "\n", 32 | "The following code creates an *instance* of `Example`, assigning that instance to the variable `ex`. This means that the object belongs to the type (a.k.a class) `Example`.\n", 33 | "\n", 34 | "```python\n", 35 | ">>> ex = Example()\n", 36 | "\n", 37 | ">>> Example.a\n", 38 | "(1, 2, 3)\n", 39 | "\n", 40 | ">>> ex.a\n", 41 | "(1, 2, 3)\n", 42 | "\n", 43 | ">>> isinstance(ex, Example)\n", 44 | "True\n", 45 | "\n", 46 | ">>> type(ex)\n", 47 | "__main__.Example\n", 48 | "```\n", 49 | "\n", 50 | "Upon this instantiation, the instance-level attribute `b` was defined via execution of the `__init__` method, wherein Python passed the instance object being created as the argument `self` to the method. Thus `b` is an *instance-level* attribute, which is not possessed by `Example` itself.\n", 51 | "\n", 52 | "```python\n", 53 | ">>> Example.b\n", 54 | "AttributeError: type object 'Example' has no attribute 'b'\n", 55 | "\n", 56 | ">>> ex.b\n", 57 | "'apple'\n", 58 | "```\n" 59 | ] 60 | } 61 | ], 62 | "metadata": { 63 | "jupytext": { 64 | "text_representation": { 65 | "extension": ".md", 66 | "format_name": "markdown", 67 | "format_version": "1.3", 68 | "jupytext_version": "1.13.6" 69 | } 70 | }, 71 | "kernelspec": { 72 | "display_name": "Python 3", 73 | "language": "python", 74 | "name": "python3" 75 | } 76 | }, 77 | "nbformat": 4, 78 | "nbformat_minor": 4 79 | } 80 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/.nojekyll -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | www.pythonlikeyoumeanit.com -------------------------------------------------------------------------------- /docs/Module3_IntroducingNumpy/BasicArrayAttributes.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "metadata": { 6 | "raw_mimetype": "text/restructuredtext" 7 | }, 8 | "source": [ 9 | ".. meta::\n", 10 | " :description: Topic: Numpy array attributes, Difficulty: Easy, Category: Section\n", 11 | " :keywords: ndim, shape, size, itemsize, dtype, examples" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "# Basic Array Attributes\n", 19 | "Armed with our understanding of multidimensional NumPy arrays, we now look at methods for programmatically inspecting an array's attributes (e.g. its dimensionality). It is especially important to understand what an array's \"shape\" is.\n", 20 | "\n", 21 | "We will use the following array to provide context for our discussion:\n", 22 | " \n", 23 | "```python\n", 24 | ">>> import numpy as np\n", 25 | ">>> example_array = np.array([[[ 0, 1, 2, 3],\n", 26 | "... [ 4, 5, 6, 7]],\n", 27 | "...\n", 28 | "... [[ 8, 9, 10, 11],\n", 29 | "... [12, 13, 14, 15]],\n", 30 | "...\n", 31 | "... [[16, 17, 18, 19],\n", 32 | "... [20, 21, 22, 23]]])\n", 33 | "```\n", 34 | "According to the preceding discussion, it is a 3-dimensional array structured such that:\n", 35 | "\n", 36 | " - axis-0 discerns which of the **3 sheets** to select from.\n", 37 | " - axis-1 discerns which of the **2 rows**, in any sheet, to select from.\n", 38 | " - axis-2 discerns which of the **4 columns**, in any sheet and row, to select from.\n", 39 | "\n", 40 | "**ndarray.ndim**: \n", 41 | "\n", 42 | "The number of axes (dimensions) of the array.\n", 43 | "\n", 44 | "```python\n", 45 | "# dimensionality of the array\n", 46 | ">>> example_array.ndim\n", 47 | "3\n", 48 | "```" 49 | ] 50 | }, 51 | { 52 | "cell_type": "markdown", 53 | "metadata": {}, 54 | "source": [ 55 | "**ndarray.shape**:\n", 56 | "\n", 57 | "A tuple of integers indicating the number of elements that are stored along each dimension of the array. For a 2D-array with $N$ rows and $M$ columns, shape will be $(N, M)$. The length of this shape-tuple is therefore equal to the number of dimensions of the array.\n", 58 | "\n", 59 | "```python\n", 60 | "# shape of the array\n", 61 | ">>> example_array.shape\n", 62 | "(3, 2, 4)\n", 63 | "```\n", 64 | "\n", 65 | "**ndarray.size**:\n", 66 | "\n", 67 | "The total number of elements of the array. This is equal to the product of the elements of the array's shape.\n", 68 | "```python\n", 69 | "# size of the array: the number of elements it stores\n", 70 | ">>> example_array.size\n", 71 | "24\n", 72 | "```\n", 73 | "\n", 74 | "**ndarray.dtype**:\n", 75 | "\n", 76 | "An object describing the data type of the elements in the array. Recall that NumPy's ND-arrays are *homogeneous*: they can only posses numbers of a uniform data type. \n", 77 | "\n", 78 | "```python\n", 79 | "# `example_array` contains integers, each of which are stored using 32 bits of memory\n", 80 | ">>> example_array.dtype\n", 81 | "dtype('int32') \n", 82 | "```\n", 83 | "\n", 84 | "**ndarray.itemsize**:\n", 85 | "\n", 86 | "The size, in bytes (8 bits is 1 byte), of each element of the array. For example, an array of elements of type `float64` has itemsize 8 $(= \\frac{64}{8})$, while an array of type `complex32` has itemsize 4 $(= \\frac{32}{8})$.\n", 87 | "```python\n", 88 | "# each integer in `example_array` is represented using 4 bytes (32 bits) of memory\n", 89 | ">>> example_array.itemsize\n", 90 | "4\n", 91 | "```" 92 | ] 93 | }, 94 | { 95 | "cell_type": "markdown", 96 | "metadata": {}, 97 | "source": [ 98 | "## Links to Official Documentation\n", 99 | "\n", 100 | "- [Array attributes](https://numpy.org/doc/stable/reference/arrays.ndarray.html#array-attributes)" 101 | ] 102 | } 103 | ], 104 | "metadata": { 105 | "jupytext": { 106 | "text_representation": { 107 | "extension": ".md", 108 | "format_name": "markdown", 109 | "format_version": "1.3", 110 | "jupytext_version": "1.13.6" 111 | } 112 | }, 113 | "kernelspec": { 114 | "display_name": "Python 3", 115 | "language": "python", 116 | "name": "python3" 117 | } 118 | }, 119 | "nbformat": 4, 120 | "nbformat_minor": 4 121 | } 122 | -------------------------------------------------------------------------------- /docs/Module4_OOP/Brief_Review.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "metadata": { 6 | "raw_mimetype": "text/restructuredtext" 7 | }, 8 | "source": [ 9 | ".. meta::\n", 10 | " :description: Topic: Brief review of object oriented programming, Difficulty: Easy, Category: Tutorial\n", 11 | " :keywords: class definition, simple, examples, overview, init, initialize, type, object" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "## A Brief Summary of Terms and Concepts\n", 19 | "\n", 20 | "Let's do a quick rundown of some of the concepts and terms discussed thus far. The following code is a *class definition*, which specifies the *attributes* of objects that belong to the class/type `Example`.\n", 21 | "\n", 22 | "```python\n", 23 | "class Example:\n", 24 | " a = (1, 2, 3)\n", 25 | " \n", 26 | " def __init__(self):\n", 27 | " self.b = \"apple\"\n", 28 | "```\n", 29 | "\n", 30 | "Once executed, this code produces the *class object* `Example`, which encapsulates the above definition and can be used to create objects that are instances of this class/type. `Example.a` and `Example.__init__` are both attributes of this class. `Example.__init__` is more specifically a special method, which is automatically invoked whenever an instance of this class is created. \n", 31 | "\n", 32 | "The following code creates an *instance* of `Example`, assigning that instance to the variable `ex`. This means that the object belongs to the type (a.k.a class) `Example`.\n", 33 | "\n", 34 | "```python\n", 35 | ">>> ex = Example()\n", 36 | "\n", 37 | ">>> Example.a\n", 38 | "(1, 2, 3)\n", 39 | "\n", 40 | ">>> ex.a\n", 41 | "(1, 2, 3)\n", 42 | "\n", 43 | ">>> isinstance(ex, Example)\n", 44 | "True\n", 45 | "\n", 46 | ">>> type(ex)\n", 47 | "__main__.Example\n", 48 | "```\n", 49 | "\n", 50 | "Upon this instantiation, the instance-level attribute `b` was defined via execution of the `__init__` method, wherein Python passed the instance object being created as the argument `self` to the method. Thus `b` is an *instance-level* attribute, which is not possessed by `Example` itself.\n", 51 | "\n", 52 | "```python\n", 53 | ">>> Example.b\n", 54 | "AttributeError: type object 'Example' has no attribute 'b'\n", 55 | "\n", 56 | ">>> ex.b\n", 57 | "'apple'\n", 58 | "```\n" 59 | ] 60 | } 61 | ], 62 | "metadata": { 63 | "jupytext": { 64 | "text_representation": { 65 | "extension": ".md", 66 | "format_name": "markdown", 67 | "format_version": "1.3", 68 | "jupytext_version": "1.13.6" 69 | } 70 | }, 71 | "kernelspec": { 72 | "display_name": "Python 3", 73 | "language": "python", 74 | "name": "python3" 75 | } 76 | }, 77 | "nbformat": 4, 78 | "nbformat_minor": 4 79 | } 80 | -------------------------------------------------------------------------------- /docs/_images/Mem_Consumption_Generator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/Mem_Consumption_Generator.png -------------------------------------------------------------------------------- /docs/_images/Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png -------------------------------------------------------------------------------- /docs/_images/Module3_IntroducingNumpy_AutoDiff_14_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/Module3_IntroducingNumpy_AutoDiff_14_0.png -------------------------------------------------------------------------------- /docs/_images/Module3_IntroducingNumpy_AutoDiff_23_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/Module3_IntroducingNumpy_AutoDiff_23_0.png -------------------------------------------------------------------------------- /docs/_images/Module3_IntroducingNumpy_AutoDiff_25_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/Module3_IntroducingNumpy_AutoDiff_25_0.png -------------------------------------------------------------------------------- /docs/_images/Module3_IntroducingNumpy_AutoDiff_27_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/Module3_IntroducingNumpy_AutoDiff_27_0.png -------------------------------------------------------------------------------- /docs/_images/Module3_IntroducingNumpy_AutoDiff_29_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/Module3_IntroducingNumpy_AutoDiff_29_0.png -------------------------------------------------------------------------------- /docs/_images/circle_square_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/circle_square_small.png -------------------------------------------------------------------------------- /docs/_images/ipython_0.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/ipython_0.PNG -------------------------------------------------------------------------------- /docs/_images/ipython_doc1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/ipython_doc1.PNG -------------------------------------------------------------------------------- /docs/_images/ipython_math.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/ipython_math.PNG -------------------------------------------------------------------------------- /docs/_images/ipython_string.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/ipython_string.PNG -------------------------------------------------------------------------------- /docs/_images/jp_docstring.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/jp_docstring.PNG -------------------------------------------------------------------------------- /docs/_images/jp_dropdown.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/jp_dropdown.PNG -------------------------------------------------------------------------------- /docs/_images/jp_files.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/jp_files.PNG -------------------------------------------------------------------------------- /docs/_images/jupyter_early.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/jupyter_early.png -------------------------------------------------------------------------------- /docs/_images/jupyter_login.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/jupyter_login.PNG -------------------------------------------------------------------------------- /docs/_images/pycharm1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_images/pycharm1.png -------------------------------------------------------------------------------- /docs/_sources/Module1_GettingStartedWithPython/SiteFormatting.md.txt: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Overview of formatting in Python Like You Mean It, Difficulty: Easy, Category: Instructions 18 | :keywords: overview, formatting, background, code block, console style 19 | 20 | 21 | 22 | # A Quick Guide to Formatting 23 | This section provides a brief overview of the code formatting style that will be used throughout this text. You are not expected to understand the details of the code, here. This merely provides a guide for what is to come. 24 | 25 | Any code that is included in-line within plain text will be formatted distinctly as so: "the variable `x` was updated...". Such items will be distinguished with backticks wherever such formatting is not available. Take for example the following commented line within Python code: 26 | 27 | ```python 28 | # the variable `x` will be updated 29 | ``` 30 | 31 | Python code will be displayed within distinct, colorized code blocks. These will typically begin with a comment, which is meant to serve as a caption that summarizes the purpose of the code block: 32 | 33 | ```python 34 | # demonstrating a basic for-loop 35 | cnt = 0 36 | for i in range(10): 37 | cnt += 1 38 | 39 | #`cnt` is now 10 40 | ``` 41 | 42 | The symbol `>>>` appears within code blocks to indicate "console-style" code, which distinguishes between code being entered by a user and the resulting output. The purpose of this is that it allows us to easily display the result of a computation without having to rely on calling the `print` function. For instance, the following code assigns the integer `1` to the variable `x`, and then displays the result of `x + 2`: 43 | 44 | ```python 45 | # demonstrating the distinction of 46 | # input and output via >>> 47 | 48 | >>> x = 1 49 | >>> x + 2 50 | 3 51 | ``` 52 | 53 | The code blocks throughout a given section of the text should be understood to be persistent even if there is a mix of "pure" code blocks and "console-style" code blocks. For example, a function may be defined at the beginning of a section, and then referenced throughout the rest of that section: 54 | ```python 55 | # defining an example function 56 | def my_func(x): 57 | return x**2 58 | ``` 59 | 60 | We can spend some time talking about `my_func` and then see it in action: 61 | ```python 62 | # demonstrating `my_func` 63 | >>> my_func(10.) 64 | 100. 65 | ``` 66 | 67 | Lastly, the input and output of an iPython console and a Jupyter notebook alike is displayed as follows: 68 | 69 | ```python 70 | 2 + 3 71 | ``` 72 | 73 | ## Running Code Snippets from this Site 74 | 75 | In PLYMI, we typically precede every code snippet with one or more commented lines. 76 | This is useful because it makes a page more "skimmable", since the code snippets essentially come with 77 | descriptive, self-explanatory captions. 78 | That being said, there is a downside to this. 79 | 80 | Python terminals don't like having multiple comment lines precede an input-prompt. 81 | E.g. if you paste and run the following code into a terminal 82 | 83 | ```python 84 | # demonstrating the distinction of 85 | # input and output via >>> 86 | 87 | >>> x = 1 88 | ``` 89 | 90 | you will get a syntax error. 91 | To fix this issue, simply exclude the comments when you copy this block to your clipboard. 92 | Running 93 | 94 | ```python 95 | >>> x = 1 96 | ``` 97 | 98 | will work without any issue. 99 | Keep this in mind if you ever find yourself having trouble running code that you copied from this site. 100 | 101 | -------------------------------------------------------------------------------- /docs/_sources/Module3_IntroducingNumpy/BasicArrayAttributes.md.txt: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Numpy array attributes, Difficulty: Easy, Category: Section 18 | :keywords: ndim, shape, size, itemsize, dtype, examples 19 | 20 | 21 | 22 | # Basic Array Attributes 23 | Armed with our understanding of multidimensional NumPy arrays, we now look at methods for programmatically inspecting an array's attributes (e.g. its dimensionality). It is especially important to understand what an array's "shape" is. 24 | 25 | We will use the following array to provide context for our discussion: 26 | 27 | ```python 28 | >>> import numpy as np 29 | >>> example_array = np.array([[[ 0, 1, 2, 3], 30 | ... [ 4, 5, 6, 7]], 31 | ... 32 | ... [[ 8, 9, 10, 11], 33 | ... [12, 13, 14, 15]], 34 | ... 35 | ... [[16, 17, 18, 19], 36 | ... [20, 21, 22, 23]]]) 37 | ``` 38 | According to the preceding discussion, it is a 3-dimensional array structured such that: 39 | 40 | - axis-0 discerns which of the **3 sheets** to select from. 41 | - axis-1 discerns which of the **2 rows**, in any sheet, to select from. 42 | - axis-2 discerns which of the **4 columns**, in any sheet and row, to select from. 43 | 44 | **ndarray.ndim**: 45 | 46 | The number of axes (dimensions) of the array. 47 | 48 | ```python 49 | # dimensionality of the array 50 | >>> example_array.ndim 51 | 3 52 | ``` 53 | 54 | 55 | 56 | **ndarray.shape**: 57 | 58 | A tuple of integers indicating the number of elements that are stored along each dimension of the array. For a 2D-array with $N$ rows and $M$ columns, shape will be $(N, M)$. The length of this shape-tuple is therefore equal to the number of dimensions of the array. 59 | 60 | ```python 61 | # shape of the array 62 | >>> example_array.shape 63 | (3, 2, 4) 64 | ``` 65 | 66 | **ndarray.size**: 67 | 68 | The total number of elements of the array. This is equal to the product of the elements of the array's shape. 69 | ```python 70 | # size of the array: the number of elements it stores 71 | >>> example_array.size 72 | 24 73 | ``` 74 | 75 | **ndarray.dtype**: 76 | 77 | An object describing the data type of the elements in the array. Recall that NumPy's ND-arrays are *homogeneous*: they can only posses numbers of a uniform data type. 78 | 79 | ```python 80 | # `example_array` contains integers, each of which are stored using 32 bits of memory 81 | >>> example_array.dtype 82 | dtype('int32') 83 | ``` 84 | 85 | **ndarray.itemsize**: 86 | 87 | The size, in bytes (8 bits is 1 byte), of each element of the array. For example, an array of elements of type `float64` has itemsize 8 $(= \frac{64}{8})$, while an array of type `complex32` has itemsize 4 $(= \frac{32}{8})$. 88 | ```python 89 | # each integer in `example_array` is represented using 4 bytes (32 bits) of memory 90 | >>> example_array.itemsize 91 | 4 92 | ``` 93 | 94 | 95 | ## Links to Official Documentation 96 | 97 | - [Array attributes](https://numpy.org/doc/stable/reference/arrays.ndarray.html#array-attributes) 98 | -------------------------------------------------------------------------------- /docs/_sources/Module3_IntroducingNumpy/IntroducingTheNDarray.md.txt: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Introduction to numpy arrays, Difficulty: Easy, Category: Section 18 | :keywords: numpy array, ndarray, introduction, overview 19 | 20 | 21 | 22 | # Introducing the ND-array 23 | It is time to start familiarizing ourselves with NumPy, the premiere library for doing numerical work in Python. To use this package, we need to be sure to "import" the NumPy module into our code: 24 | 25 | ```python 26 | import numpy as np 27 | ``` 28 | 29 | You could have run `import numpy` instead, but the prescribed method allows us to use the abbreviation 'np' throughout our code, instead of having to write 'numpy'. This is a very common abbreviation to use. 30 | 31 | The ND-array (N-dimensional array) is the star of the show for NumPy. This array simply stores a sequence of numbers. Like a Python list, you can access individual entries in this array by "indexing" into the array, and you can access a sub-sequence of the array by "slicing" it. So what distinguishes NumPy's ND-array from a Python list, and why is there a whole numerical library that revolves around this array? There are two major features that makes the ND-array special. It can: 32 | 33 | 1. Provide an interface for its underlying data to be accessed along multiple dimensions. 34 | 2. Rapidly perform mathematical operations over all of its elements, or over patterned subsequences of its elements, using compiled C code instead of Python; this is a process called vectorization. 35 | 36 | Let's take a sneak peek to see what this module has in store. The following code creates an ND-array containing the numbers 0-8: 37 | 38 | ```python 39 | >>> import numpy as np 40 | >>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8]) 41 | ``` 42 | 43 | This object belongs to the NumPy-defined type `numpy.ndarray`. 44 | 45 | ```python 46 | # An ND-array belongs to the type `numpy.ndarray` 47 | >>> type(x) 48 | numpy.ndarray 49 | 50 | >>> isinstance(x, np.ndarray) 51 | True 52 | ``` 53 | 54 | 55 | 56 | We can "reshape" this array so that its contents can be accessed along 2 dimensions: 57 | ```python 58 | >>> x = x.reshape(3,3) 59 | >>> x 60 | array([[0, 1, 2], 61 | [3, 4, 5], 62 | [6, 7, 8]]) 63 | ``` 64 | 65 | We will utilize one of NumPy's "vectorized" functions to square each entry in the array (without us needing to write a for-loop) 66 | ```python 67 | >>> np.power(x, 2) # can also be calculated using the shorthand: x**2 68 | array([[ 0, 1, 4], 69 | [ 9, 16, 25], 70 | [36, 49, 64]], dtype=int32) 71 | ``` 72 | 73 | Let's take the mean value along the three distinct rows of our data: 74 | ```python 75 | >>> np.mean(x, axis=1) 76 | array([ 1., 4., 7.]) 77 | ``` 78 | 79 | We can use broadcasting to raise each column of `x` to a different power: 80 | ```python 81 | >>> x ** np.array([0., 1., 2.]) 82 | array([[ 1., 1., 4.], 83 | [ 1., 4., 25.], 84 | [ 1., 7., 64.]]) 85 | ``` 86 | 87 | Basic indexing allows us to access multi-dimensional slices of `x`: 88 | ```python 89 | >>> x[:2, :3] 90 | array([[0, 1, 2], 91 | [3, 4, 5]]) 92 | ``` 93 | 94 | Advanced indexing can be used to access all even-valued entries of `x`; let's update `x` so that all of its even-valued entries are multiplied by -1: 95 | 96 | ```python 97 | >>> x[x % 2 == 0] *= -1 98 | >>> x 99 | array([[ 0, 1, -2], 100 | [ 3, -4, 5], 101 | [-6, 7, -8]]) 102 | ``` 103 | 104 | By the end of this module, these code snippets should make good sense, and NumPy's tremendous utility should be clear. 105 | 106 | 107 | ## Links to Official Documentation 108 | 109 | - [The N-dimensional array](https://numpy.org/doc/stable/reference/arrays.ndarray.html) 110 | - [NumPy Basics](https://numpy.org/doc/stable/user/basics.html#numpy-basics) 111 | - [NumPy reference](https://numpy.org/doc/stable/reference/index.html) 112 | -------------------------------------------------------------------------------- /docs/_sources/Module4_OOP/Brief_Review.md.txt: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Brief review of object oriented programming, Difficulty: Easy, Category: Tutorial 18 | :keywords: class definition, simple, examples, overview, init, initialize, type, object 19 | 20 | 21 | 22 | ## A Brief Summary of Terms and Concepts 23 | 24 | Let's do a quick rundown of some of the concepts and terms discussed thus far. The following code is a *class definition*, which specifies the *attributes* of objects that belong to the class/type `Example`. 25 | 26 | ```python 27 | class Example: 28 | a = (1, 2, 3) 29 | 30 | def __init__(self): 31 | self.b = "apple" 32 | ``` 33 | 34 | Once executed, this code produces the *class object* `Example`, which encapsulates the above definition and can be used to create objects that are instances of this class/type. `Example.a` and `Example.__init__` are both attributes of this class. `Example.__init__` is more specifically a special method, which is automatically invoked whenever an instance of this class is created. 35 | 36 | The following code creates an *instance* of `Example`, assigning that instance to the variable `ex`. This means that the object belongs to the type (a.k.a class) `Example`. 37 | 38 | ```python 39 | >>> ex = Example() 40 | 41 | >>> Example.a 42 | (1, 2, 3) 43 | 44 | >>> ex.a 45 | (1, 2, 3) 46 | 47 | >>> isinstance(ex, Example) 48 | True 49 | 50 | >>> type(ex) 51 | __main__.Example 52 | ``` 53 | 54 | Upon this instantiation, the instance-level attribute `b` was defined via execution of the `__init__` method, wherein Python passed the instance object being created as the argument `self` to the method. Thus `b` is an *instance-level* attribute, which is not possessed by `Example` itself. 55 | 56 | ```python 57 | >>> Example.b 58 | AttributeError: type object 'Example' has no attribute 'b' 59 | 60 | >>> ex.b 61 | 'apple' 62 | ``` 63 | 64 | 65 | -------------------------------------------------------------------------------- /docs/_sources/module_1.rst.txt: -------------------------------------------------------------------------------- 1 | Module 1: Getting Started with Python 2 | ===================================== 3 | This module introduces the reader to the Python programming language and to some powerful tools for writing and running Python code. We will discuss what Python is, what it means to be a programming language, as well as what happens when you install Python on your computer. 4 | 5 | Next, we will step through the process of installing Python on our computers. Specifically, we will be installing the Anaconda distribution of Python, which includes critical 3rd party libraries and tools that are essential for doing any STEM-related work (e.g. NumPy, matplotlib, and Jupyter). 6 | 7 | Ready or not, it's time to actually write some code! Armed with our fresh install of Python, we will embark on an informal introduction to the language by dabbling with numbers, messing with strings, and playing with lists. This will allow us to begin building an intuition of what Python's syntax generally looks like and what it feels like to write and run Python code. Module 2 is where we will begin a more careful study of the language. 8 | 9 | Lastly, we will take some time to survey some modern tools for writing and editing Python code. This includes the revolutionary Jupyter notebook, which has become a fantastically popular tool for researchers, data scientists, educators, and students alike. Also presented are two of the most powerful integrated development environments (IDEs) for Python: PyCharm and Visual Studio Code. 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | :caption: Contents: 14 | 15 | Module1_GettingStartedWithPython/SiteFormatting.md 16 | Module1_GettingStartedWithPython/GettingStartedWithPython.md 17 | Module1_GettingStartedWithPython/Installing_Python.md 18 | Module1_GettingStartedWithPython/Informal_Intro_Python.md 19 | Module1_GettingStartedWithPython/Jupyter_Notebooks.md 20 | Module1_GettingStartedWithPython/Getting_Started_With_IDEs_and_Notebooks.md 21 | 22 | -------------------------------------------------------------------------------- /docs/_sources/module_2.rst.txt: -------------------------------------------------------------------------------- 1 | Module 2: The Essentials of Python 2 | ================================== 3 | This module is designed to introduce you to the essential elements of Python. We will begin by studying the basic types of objects that are built-in to Python, which will enable us to work with numbers, text, and containers that can store a collection of objects. Lists, tuples, and strings all store *sequences* of objects (characters, in the case of strings), as such Python provides a common interface for working with these types; your ability to manipulate sequences of data will be a cornerstone for nearly all STEM work that you do in Python. 4 | 5 | Having introduced Python's basic types of objects and the means for working with sequences, we will formally discuss the process of assigning variables to these objects. It is not uncommon to assign multiple variables to the same object; Python's treatment of multiple "references" to a single object will be resolved here, and in doing so we will distinguish *mutable* objects from *immutable* objects. 6 | 7 | Armed with our growing toolkit of Python objects, and our newfound understanding of how to reference them with variables, we proceed to learn how to control the flow of logic within our code. "if", "else", and "else-if" statements are defined so that we can have branches of code be executed only if user-specified conditions are met (e.g. if a student's grade is below 65, execute code to email that student a warning). "while-loops" and "for-loops" permit us to execute blocks of code repeatedly (e.g. for each student in this list, execute the code to compute that student's average score). These so-called control-flow tools will greatly improve our ability to write useful code. 8 | 9 | Coming off our discussion of for-loops, we take the opportunity to discuss some niceties of the Python language that arise when working with objects that are iterable (e.g. can be iterated over in a for-loop). Niceties is actually an understatement; these tricks of the trade will greatly bolster our ability to write clean, concise, and efficient code. We will pay particular attention to generator comprehension statements, which will allow us to process long sequences of data without having to hold all of the data in memory. You will be glad to have these tricks and tools in your repertoire. 10 | 11 | Returning to a more traditional paradigm of programming languages, we will learn how to define our own functions. This will allow us to encapsulate code for reuse and invoke the code on-demand by "calling" the function that contains that code. Functions enable us to write code that is modular and to construct powerful algorithms by relying on these functions. 12 | 13 | Finally, we will return to our initial endeavor of learning about the various types of objects that are built-in to Python, adding dictionaries, sets, and other types of collections to our inventory. Now that we are much more familiar with the language as a whole, we can concern ourselves with more nuanced, but extremely important matters. This involves discussing the efficiency of the algorithms used under the hood by its different data structures. For example, it will become clear that checking if an object is contained in a set is *much* more efficient than checking for membership in a list. Using the right tool for a given task is of manifest importance. 14 | 15 | Although far from comprehensive, this module will acquaint you with the many of the essential elements of Python, along with the niceties that make the language easy to use. The objective here is to equip the reader with the tools needed to write clear and efficient code, that is particularly effective for data science applications. It is paramount that writing code in Python does not feel like stacking a bunch black boxes together; for this reason, a considerable amount of detail is included here. I hope that a reasonable balance has been struck such that this text is still easy to read and that its key "takeaways" are readily distilled. 16 | 17 | .. toctree:: 18 | :maxdepth: 2 19 | :caption: Contents: 20 | 21 | Module2_EssentialsOfPython/Basic_Objects.md 22 | Module2_EssentialsOfPython/SequenceTypes.md 23 | Module2_EssentialsOfPython/Variables_and_Assignment.md 24 | Module2_EssentialsOfPython/Introduction.md 25 | Module2_EssentialsOfPython/ConditionalStatements.md 26 | Module2_EssentialsOfPython/ForLoops.md 27 | Module2_EssentialsOfPython/Iterables.md 28 | Module2_EssentialsOfPython/Generators_and_Comprehensions.md 29 | Module2_EssentialsOfPython/Itertools.md 30 | Module2_EssentialsOfPython/Functions.md 31 | Module2_EssentialsOfPython/Scope.md 32 | Module2_EssentialsOfPython/DataStructures.md 33 | Module2_EssentialsOfPython/DataStructures_II_Dictionaries.md 34 | Module2_EssentialsOfPython/DataStructures_III_Sets_and_More.md 35 | -------------------------------------------------------------------------------- /docs/_sources/module_2_problems.rst.txt: -------------------------------------------------------------------------------- 1 | Module 2: Problems 2 | ================== 3 | This section presents the reader with problems to exercise their understanding of the materials that were presented in the Essentials of Python module. They are meant to be worked through after having read through the module in its entirety. Accompanying each problem is a solution and explanation, which include links to the relevant sections of Python Like You Mean It. The solutions are also designed to emphasize good coding practices. 4 | 5 | These problems were written by former students of mine and PLYMI readers. Have you written a piece of code that would make for a good exercise for a Python user? Consider submitting a problem and solution to be included here! 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | :caption: Contents: 11 | 12 | Module2_EssentialsOfPython/Problems/MergeMaxDicts.md 13 | Module2_EssentialsOfPython/Problems/MarginPercentage.md 14 | Module2_EssentialsOfPython/Problems/DifferenceFanout.md 15 | Module2_EssentialsOfPython/Problems/EncodeAsString.md 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/_sources/module_3.rst.txt: -------------------------------------------------------------------------------- 1 | Module 3: The Essentials of NumPy 2 | ================================== 3 | NumPy is the reason why Python stands among the ranks of R, Matlab, and Julia, as one of the most popular languages for doing STEM-related computing. It is a third-party library (i.e. it is not part of Python's standard library) that facilitates numerical computing in Python by providing users with a versatile N-dimensional array object for storing data, and powerful mathematical functions for operating on those arrays of numbers. NumPy implements its features in ways that are highly optimized, via a process known as vectorization, that enables a degree of computational efficiency that is otherwise unachievable by the Python language. 4 | 5 | The impact that NumPy has had on the landscape of numerical computing in Python is hard to overstate. Whether you are plotting data in matplotlib, analyzing tabular data via `pandas `_ and `xarray `_, using `OpenCV `_ for image and video processing, doing astrophysics research with the help of `astropy `_, or trying out machine learning with `Scikit-Learn `_ and `MyGrad `_, you are using Python libraries that bare the indelible mark of NumPy. At their core, each of these libraries depend on NumPy's N-dimensional array and its efficient vectorization capabilities. NumPy also fundamentally impacts the designs of these libraries and the way that they interface with their users. Thus, one cannot leverage these tools effectively, and cannot do STEM work in Python in general, without having a solid foundation in NumPy. 6 | 7 | This module presents to us the essentials of NumPy. We will first define what the term dimensionality means and will develop an intuition for what zero, one, two, and N-dimensional arrays are, and why they are invaluable for data science applications. Next, we will discuss the ambiguities of array traversal-order and NumPy's default use of row-major ordering. We will then arrive at the critical topic of vectorization, which prescribes the ways in which NumPy dispatches mathematical operations over arrays of numbers. This will also give us keen insight into how NumPy achieves its tremendous computational efficiency. Finally, we will dive into some of NumPy's more advanced features. These include its rules for broadcasting mathematical operations between arrays of different shapes, as well as its mechanisms for accessing and updating an array's contents via basic and advanced indexing. Armed with these techniques, we will be able to write concise and powerful numerical code using NumPy and Python's many other STEM libraries! 8 | 9 | 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | :caption: Contents: 14 | 15 | Module3_IntroducingNumpy/IntroducingTheNDarray.md 16 | Module3_IntroducingNumpy/AccessingDataAlongMultipleDimensions.md 17 | Module3_IntroducingNumpy/BasicArrayAttributes.md 18 | Module3_IntroducingNumpy/FunctionsForCreatingNumpyArrays.md 19 | Module3_IntroducingNumpy/ArrayTraversal.md 20 | Module3_IntroducingNumpy/VectorizedOperations.md 21 | Module3_IntroducingNumpy/Broadcasting.md 22 | Module3_IntroducingNumpy/BasicIndexing.md 23 | Module3_IntroducingNumpy/AdvancedIndexing.md 24 | Module3_IntroducingNumpy/AutoDiff.md 25 | -------------------------------------------------------------------------------- /docs/_sources/module_3_problems.rst.txt: -------------------------------------------------------------------------------- 1 | Module 3: Problems 2 | ================== 3 | This section presents the reader with problems to exercise their understanding of the materials that were presented in the Essentials of NumPy module. They are meant to be worked through after having read through the module in its entirety. Accompanying each problem is a solution and explanation, which include links to the relevant sections of Python Like You Mean It. The solutions are also designed to emphasize good coding practices. 4 | 5 | These problems were written by former students of mine and PLYMI readers. Have you written a piece of code that would make for a good exercise for a Python user? Consider submitting a problem and solution to be included here! 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | :caption: Contents: 11 | 12 | Module3_IntroducingNumpy/Problems/ComputeAccuracy.md 13 | Module3_IntroducingNumpy/Problems/Approximating_pi.ipynb 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs/_sources/module_4.rst.txt: -------------------------------------------------------------------------------- 1 | Module 4: Object Oriented Programming 2 | ===================================== 3 | In this module, we will come to see that Python is an object-oriented language. That is, the language is all about defining different types of objects that encapsulate data, and that possess functions that permit users to access and manipulate this data. Our tour through `the essentials of Python `_ and `the essentials of NumPy `_ brought us into contact with various types of objects, such as the :code:`int`, :code:`str`, :code:`list`, :code:`tuple`, :code:`dict`, and the :code:`numpy.ndarray`, to name a few. We have seen that these different types of objects have starkly different functionality from one another. We will study the syntax and constructs for creating and interacting with objects in Python. Ultimately, will find our skill sets as Python-users much fuller and more sophisticated having understood object-oriented programming in Python. 4 | 5 | We begin this module by establishing some key terminology for discussing object-oriented programming, drawing attention to the important fact that the terms 'class' and 'type' mean the same thing in modern Python. Next, we study the syntax for defining a class, and take time to distinguish between the resulting class object and the subsequent class instances that can then be created. Having defined our first custom class of object, we then study the syntax for defining class-methods, which permits us to add customized functionality to our class. Further, we will introduce ourselves to Python's reserved special methods, which empower us to fully interface our class with Python's protocols for behaving like a sequence, an iterable, a function, etc. We conclude this module with a brief discussion of the concept of inheritance, which is a mechanism by which a new class can inherit attributes from an existing class. 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | :caption: Contents: 10 | 11 | Module4_OOP/Introduction_to_OOP.md 12 | Module4_OOP/ClassDefinition.md 13 | Module4_OOP/ClassInstances.md 14 | Module4_OOP/Brief_Review.md 15 | Module4_OOP/Methods.md 16 | Module4_OOP/Applications_of_OOP.md 17 | Module4_OOP/Special_Methods.md 18 | Module4_OOP/Inheritance.md 19 | -------------------------------------------------------------------------------- /docs/_sources/module_5.rst.txt: -------------------------------------------------------------------------------- 1 | Module 5: Odds and Ends 2 | ===================================== 3 | This module contains materials that are extraneous to the essentials of Python as a language and of NumPy, but are nonetheless critical to doing day-to-day work using these tools. 4 | 5 | The first section introduces some general guidelines for writing "good code". Specifically, it points you, the reader, to a style guide that many people in the Python community abide by. It also introduces a relatively new and increasingly-popular feature of Python, called type-hinting, which permits us to enhance our code with type-documentation annotations. The reader will also be introduced to NumPy's and Google's respective specifications for writing good docstrings. 6 | 7 | 8 | The second section of this module introduces matplotlib, a library that allows us to plot and visually inspect data. Here, we will specifically learn how to leverage matplotlib's object-oriented API, as opposed to its functional API, for creating scatter plots, line plots, histograms, and image plots. 9 | 10 | The next section presents the "best practices" for working with files in Python. This includes reading from and writing to files within a context manager. We will learn to leverage the powerful :code:`pathlib.Path` class to work with paths in elegant and platform-independent ways. Finally, we review some critical file utilities, like searching for files with :code:`glob`, saving files with :code:`pickle`, and saving NumPy arrays. 11 | 12 | Moving forward, we will study Python's packaging system, which gives us insight into what the :code:`import` statement is all about. This naturally leads us to consider what it actually means to install a Python package on one's machine. We will review the :code:`pip` and :code:`conda` package managers, which are the two prominent means for installing and managing Python packages on one's machine. This is section will be critical for anyone interesting in maturing from a Jupyter notebook-only Python user to someone who can craft their own installable Python project. It will also greatly improve your ability to troubleshoot Python-related technical issues on your machine. 13 | 14 | More sections will be added to this module down the road. 15 | 16 | .. toctree:: 17 | :maxdepth: 2 18 | :caption: Contents: 19 | 20 | Module5_OddsAndEnds/Writing_Good_Code.md 21 | Module5_OddsAndEnds/Matplotlib.ipynb 22 | Module5_OddsAndEnds/WorkingWithFiles.md 23 | Module5_OddsAndEnds/Modules_and_Packages.md 24 | 25 | -------------------------------------------------------------------------------- /docs/_static/css/badge_only.css: -------------------------------------------------------------------------------- 1 | .fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} -------------------------------------------------------------------------------- /docs/_static/css/fonts/Roboto-Slab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/Roboto-Slab-Bold.woff -------------------------------------------------------------------------------- /docs/_static/css/fonts/Roboto-Slab-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/Roboto-Slab-Bold.woff2 -------------------------------------------------------------------------------- /docs/_static/css/fonts/Roboto-Slab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/Roboto-Slab-Regular.woff -------------------------------------------------------------------------------- /docs/_static/css/fonts/Roboto-Slab-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/Roboto-Slab-Regular.woff2 -------------------------------------------------------------------------------- /docs/_static/css/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/_static/css/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/_static/css/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/_static/css/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/_static/css/fonts/lato-bold-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/lato-bold-italic.woff -------------------------------------------------------------------------------- /docs/_static/css/fonts/lato-bold-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/lato-bold-italic.woff2 -------------------------------------------------------------------------------- /docs/_static/css/fonts/lato-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/lato-bold.woff -------------------------------------------------------------------------------- /docs/_static/css/fonts/lato-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/lato-bold.woff2 -------------------------------------------------------------------------------- /docs/_static/css/fonts/lato-normal-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/lato-normal-italic.woff -------------------------------------------------------------------------------- /docs/_static/css/fonts/lato-normal-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/lato-normal-italic.woff2 -------------------------------------------------------------------------------- /docs/_static/css/fonts/lato-normal.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/lato-normal.woff -------------------------------------------------------------------------------- /docs/_static/css/fonts/lato-normal.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/css/fonts/lato-normal.woff2 -------------------------------------------------------------------------------- /docs/_static/documentation_options.js: -------------------------------------------------------------------------------- 1 | var DOCUMENTATION_OPTIONS = { 2 | URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), 3 | VERSION: '1.4.1', 4 | LANGUAGE: 'None', 5 | COLLAPSE_INDEX: false, 6 | BUILDER: 'html', 7 | FILE_SUFFIX: '.html', 8 | LINK_SUFFIX: '.html', 9 | HAS_SOURCE: true, 10 | SOURCELINK_SUFFIX: '.txt', 11 | NAVIGATION_WITH_KEYS: false 12 | }; -------------------------------------------------------------------------------- /docs/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/file.png -------------------------------------------------------------------------------- /docs/_static/gtag.js: -------------------------------------------------------------------------------- 1 | window.dataLayer = window.dataLayer || []; 2 | function gtag(){dataLayer.push(arguments);} 3 | gtag('js', new Date()); 4 | 5 | gtag('config', 'UA-115029372-1'); 6 | -------------------------------------------------------------------------------- /docs/_static/js/badge_only.js: -------------------------------------------------------------------------------- 1 | !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); -------------------------------------------------------------------------------- /docs/_static/js/html5shiv-printshiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /docs/_static/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /docs/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/minus.png -------------------------------------------------------------------------------- /docs/_static/my_theme.css: -------------------------------------------------------------------------------- 1 | .wy-nav-content { 2 | max-width: 1000px !important; 3 | } 4 | -------------------------------------------------------------------------------- /docs/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/_static/plus.png -------------------------------------------------------------------------------- /docs/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs/objects.inv -------------------------------------------------------------------------------- /docs_backup/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: d6d4cc67add36a9ae76c4402db05d241 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module1_GettingStartedWithPython/GettingStartedWithPython.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module1_GettingStartedWithPython/GettingStartedWithPython.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module1_GettingStartedWithPython/Getting_Started_With_IDEs_and_Notebooks.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module1_GettingStartedWithPython/Getting_Started_With_IDEs_and_Notebooks.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module1_GettingStartedWithPython/Informal_Intro_Python.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module1_GettingStartedWithPython/Informal_Intro_Python.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module1_GettingStartedWithPython/Installing_Python.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module1_GettingStartedWithPython/Installing_Python.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module1_GettingStartedWithPython/Jupyter_Notebooks.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module1_GettingStartedWithPython/Jupyter_Notebooks.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module1_GettingStartedWithPython/SiteFormatting.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module1_GettingStartedWithPython/SiteFormatting.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Basic_Objects.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Basic_Objects.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/ConditionalStatements.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/ConditionalStatements.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/DataStructures.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/DataStructures.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/DataStructures_III_Sets_and_More.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/DataStructures_III_Sets_and_More.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/DataStructures_II_Dictionaries.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/DataStructures_II_Dictionaries.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/ForLoops.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/ForLoops.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Functions.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Functions.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Generators_and_Comprehensions.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Generators_and_Comprehensions.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Introduction.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Introduction.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Iterables.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Iterables.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Itertools.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Itertools.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/DifferenceFanout.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/DifferenceFanout.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/EncodeAsString.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/EncodeAsString.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/MarginPercentage.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/MarginPercentage.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/MergeMaxDicts.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/MergeMaxDicts.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/Palindrome.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Problems/Palindrome.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Scope.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Scope.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/SequenceTypes.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/SequenceTypes.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module2_EssentialsOfPython/Variables_and_Assignment.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module2_EssentialsOfPython/Variables_and_Assignment.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/AccessingDataAlongMultipleDimensions.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/AccessingDataAlongMultipleDimensions.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/AdvancedIndexing.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/AdvancedIndexing.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/ArrayTraversal.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/ArrayTraversal.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/AutoDiff.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/AutoDiff.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/BasicArrayAttributes.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/BasicArrayAttributes.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/BasicIndexing.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/BasicIndexing.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/Broadcasting.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/Broadcasting.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/FunctionsForCreatingNumpyArrays.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/FunctionsForCreatingNumpyArrays.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/IntroducingTheNDarray.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/IntroducingTheNDarray.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/Problems/Approximating_pi.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/Problems/Approximating_pi.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/Problems/ComputeAccuracy.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/Problems/ComputeAccuracy.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module3_IntroducingNumpy/VectorizedOperations.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module3_IntroducingNumpy/VectorizedOperations.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module4_OOP/Applications_of_OOP.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module4_OOP/Applications_of_OOP.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module4_OOP/Brief_Review.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module4_OOP/Brief_Review.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module4_OOP/ClassDefinition.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module4_OOP/ClassDefinition.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module4_OOP/ClassInstances.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module4_OOP/ClassInstances.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module4_OOP/Inheritance.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module4_OOP/Inheritance.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module4_OOP/Introduction_to_OOP.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module4_OOP/Introduction_to_OOP.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module4_OOP/Methods.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module4_OOP/Methods.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module4_OOP/Special_Methods.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module4_OOP/Special_Methods.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module5_OddsAndEnds/Matplotlib.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module5_OddsAndEnds/Matplotlib.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module5_OddsAndEnds/Modules_and_Packages.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module5_OddsAndEnds/Modules_and_Packages.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module5_OddsAndEnds/WorkingWithFiles.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module5_OddsAndEnds/WorkingWithFiles.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/Module5_OddsAndEnds/Writing_Good_Code.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/Module5_OddsAndEnds/Writing_Good_Code.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/changes.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/changes.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/environment.pickle -------------------------------------------------------------------------------- /docs_backup/.doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/index.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/intro.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/intro.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/module_1.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/module_1.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/module_2.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/module_2.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/module_2_problems.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/module_2_problems.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/module_3.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/module_3.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/module_3_problems.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/module_3_problems.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/module_4.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/module_4.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/module_5.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/module_5.doctree -------------------------------------------------------------------------------- /docs_backup/.doctrees/nbsphinx/Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/nbsphinx/Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png -------------------------------------------------------------------------------- /docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_14_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_14_0.png -------------------------------------------------------------------------------- /docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_23_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_23_0.png -------------------------------------------------------------------------------- /docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_25_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_25_0.png -------------------------------------------------------------------------------- /docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_27_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_27_0.png -------------------------------------------------------------------------------- /docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_29_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.doctrees/nbsphinx/Module3_IntroducingNumpy_AutoDiff_29_0.png -------------------------------------------------------------------------------- /docs_backup/.doctrees/nbsphinx/Module4_OOP/Brief_Review.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "id": "ec045b14", 6 | "metadata": { 7 | "raw_mimetype": "text/restructuredtext" 8 | }, 9 | "source": [ 10 | ".. meta::\n", 11 | " :description: Topic: Brief review of object oriented programming, Difficulty: Easy, Category: Tutorial\n", 12 | " :keywords: class definition, simple, examples, overview, init, initialize, type, object" 13 | ] 14 | }, 15 | { 16 | "cell_type": "markdown", 17 | "id": "b7d6f83e", 18 | "metadata": {}, 19 | "source": [ 20 | "## A Brief Summary of Terms and Concepts\n", 21 | "\n", 22 | "Let's do a quick rundown of some of the concepts and terms discussed thus far. The following code is a *class definition*, which specifies the *attributes* of objects that belong to the class/type `Example`.\n", 23 | "\n", 24 | "```python\n", 25 | "class Example:\n", 26 | " a = (1, 2, 3)\n", 27 | " \n", 28 | " def __init__(self):\n", 29 | " self.b = \"apple\"\n", 30 | "```\n", 31 | "\n", 32 | "Once executed, this code produces the *class object* `Example`, which encapsulates the above definition and can be used to create objects that are instances of this class/type. `Example.a` and `Example.__init__` are both attributes of this class. `Example.__init__` is more specifically a special method, which is automatically invoked whenever an instance of this class is created. \n", 33 | "\n", 34 | "The following code creates an *instance* of `Example`, assigning that instance to the variable `ex`. This means that the object belongs to the type (a.k.a class) `Example`.\n", 35 | "\n", 36 | "```python\n", 37 | ">>> ex = Example()\n", 38 | "\n", 39 | ">>> Example.a\n", 40 | "(1, 2, 3)\n", 41 | "\n", 42 | ">>> ex.a\n", 43 | "(1, 2, 3)\n", 44 | "\n", 45 | ">>> isinstance(ex, Example)\n", 46 | "True\n", 47 | "\n", 48 | ">>> type(ex)\n", 49 | "__main__.Example\n", 50 | "```\n", 51 | "\n", 52 | "Upon this instantiation, the instance-level attribute `b` was defined via execution of the `__init__` method, wherein Python passed the instance object being created as the argument `self` to the method. Thus `b` is an *instance-level* attribute, which is not possessed by `Example` itself.\n", 53 | "\n", 54 | "```python\n", 55 | ">>> Example.b\n", 56 | "AttributeError: type object 'Example' has no attribute 'b'\n", 57 | "\n", 58 | ">>> ex.b\n", 59 | "'apple'\n", 60 | "```\n" 61 | ] 62 | } 63 | ], 64 | "metadata": { 65 | "jupytext": { 66 | "text_representation": { 67 | "extension": ".md", 68 | "format_name": "markdown", 69 | "format_version": "1.3", 70 | "jupytext_version": "1.13.6" 71 | } 72 | }, 73 | "kernelspec": { 74 | "display_name": "Python 3", 75 | "language": "python", 76 | "name": "python3" 77 | } 78 | }, 79 | "nbformat": 4, 80 | "nbformat_minor": 5 81 | } 82 | -------------------------------------------------------------------------------- /docs_backup/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/.nojekyll -------------------------------------------------------------------------------- /docs_backup/CNAME: -------------------------------------------------------------------------------- 1 | www.pythonlikeyoumeanit.com -------------------------------------------------------------------------------- /docs_backup/Module3_IntroducingNumpy/BasicArrayAttributes.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "id": "d5140f80", 6 | "metadata": { 7 | "raw_mimetype": "text/restructuredtext" 8 | }, 9 | "source": [ 10 | ".. meta::\n", 11 | " :description: Topic: Numpy array attributes, Difficulty: Easy, Category: Section\n", 12 | " :keywords: ndim, shape, size, itemsize, dtype, examples" 13 | ] 14 | }, 15 | { 16 | "cell_type": "markdown", 17 | "id": "91450c26", 18 | "metadata": {}, 19 | "source": [ 20 | "# Basic Array Attributes\n", 21 | "Armed with our understanding of multidimensional NumPy arrays, we now look at methods for programmatically inspecting an array's attributes (e.g. its dimensionality). It is especially important to understand what an array's \"shape\" is.\n", 22 | "\n", 23 | "We will use the following array to provide context for our discussion:\n", 24 | " \n", 25 | "```python\n", 26 | ">>> import numpy as np\n", 27 | ">>> example_array = np.array([[[ 0, 1, 2, 3],\n", 28 | "... [ 4, 5, 6, 7]],\n", 29 | "...\n", 30 | "... [[ 8, 9, 10, 11],\n", 31 | "... [12, 13, 14, 15]],\n", 32 | "...\n", 33 | "... [[16, 17, 18, 19],\n", 34 | "... [20, 21, 22, 23]]])\n", 35 | "```\n", 36 | "According to the preceding discussion, it is a 3-dimensional array structured such that:\n", 37 | "\n", 38 | " - axis-0 discerns which of the **3 sheets** to select from.\n", 39 | " - axis-1 discerns which of the **2 rows**, in any sheet, to select from.\n", 40 | " - axis-2 discerns which of the **4 columns**, in any sheet and row, to select from.\n", 41 | "\n", 42 | "**ndarray.ndim**: \n", 43 | "\n", 44 | "The number of axes (dimensions) of the array.\n", 45 | "\n", 46 | "```python\n", 47 | "# dimensionality of the array\n", 48 | ">>> example_array.ndim\n", 49 | "3\n", 50 | "```" 51 | ] 52 | }, 53 | { 54 | "cell_type": "markdown", 55 | "id": "71c4ecf6", 56 | "metadata": {}, 57 | "source": [ 58 | "**ndarray.shape**:\n", 59 | "\n", 60 | "A tuple of integers indicating the number of elements that are stored along each dimension of the array. For a 2D-array with $N$ rows and $M$ columns, shape will be $(N, M)$. The length of this shape-tuple is therefore equal to the number of dimensions of the array.\n", 61 | "\n", 62 | "```python\n", 63 | "# shape of the array\n", 64 | ">>> example_array.shape\n", 65 | "(3, 2, 4)\n", 66 | "```\n", 67 | "\n", 68 | "**ndarray.size**:\n", 69 | "\n", 70 | "The total number of elements of the array. This is equal to the product of the elements of the array's shape.\n", 71 | "```python\n", 72 | "# size of the array: the number of elements it stores\n", 73 | ">>> example_array.size\n", 74 | "24\n", 75 | "```\n", 76 | "\n", 77 | "**ndarray.dtype**:\n", 78 | "\n", 79 | "An object describing the data type of the elements in the array. Recall that NumPy's ND-arrays are *homogeneous*: they can only posses numbers of a uniform data type. \n", 80 | "\n", 81 | "```python\n", 82 | "# `example_array` contains integers, each of which are stored using 32 bits of memory\n", 83 | ">>> example_array.dtype\n", 84 | "dtype('int32') \n", 85 | "```\n", 86 | "\n", 87 | "**ndarray.itemsize**:\n", 88 | "\n", 89 | "The size, in bytes (8 bits is 1 byte), of each element of the array. For example, an array of elements of type `float64` has itemsize 8 $(= \\frac{64}{8})$, while an array of type `complex32` has itemsize 4 $(= \\frac{32}{8})$.\n", 90 | "```python\n", 91 | "# each integer in `example_array` is represented using 4 bytes (32 bits) of memory\n", 92 | ">>> example_array.itemsize\n", 93 | "4\n", 94 | "```" 95 | ] 96 | }, 97 | { 98 | "cell_type": "markdown", 99 | "id": "ad35cc52", 100 | "metadata": {}, 101 | "source": [ 102 | "## Links to Official Documentation\n", 103 | "\n", 104 | "- [Array attributes](https://numpy.org/doc/stable/reference/arrays.ndarray.html#array-attributes)" 105 | ] 106 | } 107 | ], 108 | "metadata": { 109 | "jupytext": { 110 | "text_representation": { 111 | "extension": ".md", 112 | "format_name": "markdown", 113 | "format_version": "1.3", 114 | "jupytext_version": "1.13.6" 115 | } 116 | }, 117 | "kernelspec": { 118 | "display_name": "Python 3", 119 | "language": "python", 120 | "name": "python3" 121 | } 122 | }, 123 | "nbformat": 4, 124 | "nbformat_minor": 5 125 | } 126 | -------------------------------------------------------------------------------- /docs_backup/Module4_OOP/Brief_Review.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "raw", 5 | "id": "ec045b14", 6 | "metadata": { 7 | "raw_mimetype": "text/restructuredtext" 8 | }, 9 | "source": [ 10 | ".. meta::\n", 11 | " :description: Topic: Brief review of object oriented programming, Difficulty: Easy, Category: Tutorial\n", 12 | " :keywords: class definition, simple, examples, overview, init, initialize, type, object" 13 | ] 14 | }, 15 | { 16 | "cell_type": "markdown", 17 | "id": "b7d6f83e", 18 | "metadata": {}, 19 | "source": [ 20 | "## A Brief Summary of Terms and Concepts\n", 21 | "\n", 22 | "Let's do a quick rundown of some of the concepts and terms discussed thus far. The following code is a *class definition*, which specifies the *attributes* of objects that belong to the class/type `Example`.\n", 23 | "\n", 24 | "```python\n", 25 | "class Example:\n", 26 | " a = (1, 2, 3)\n", 27 | " \n", 28 | " def __init__(self):\n", 29 | " self.b = \"apple\"\n", 30 | "```\n", 31 | "\n", 32 | "Once executed, this code produces the *class object* `Example`, which encapsulates the above definition and can be used to create objects that are instances of this class/type. `Example.a` and `Example.__init__` are both attributes of this class. `Example.__init__` is more specifically a special method, which is automatically invoked whenever an instance of this class is created. \n", 33 | "\n", 34 | "The following code creates an *instance* of `Example`, assigning that instance to the variable `ex`. This means that the object belongs to the type (a.k.a class) `Example`.\n", 35 | "\n", 36 | "```python\n", 37 | ">>> ex = Example()\n", 38 | "\n", 39 | ">>> Example.a\n", 40 | "(1, 2, 3)\n", 41 | "\n", 42 | ">>> ex.a\n", 43 | "(1, 2, 3)\n", 44 | "\n", 45 | ">>> isinstance(ex, Example)\n", 46 | "True\n", 47 | "\n", 48 | ">>> type(ex)\n", 49 | "__main__.Example\n", 50 | "```\n", 51 | "\n", 52 | "Upon this instantiation, the instance-level attribute `b` was defined via execution of the `__init__` method, wherein Python passed the instance object being created as the argument `self` to the method. Thus `b` is an *instance-level* attribute, which is not possessed by `Example` itself.\n", 53 | "\n", 54 | "```python\n", 55 | ">>> Example.b\n", 56 | "AttributeError: type object 'Example' has no attribute 'b'\n", 57 | "\n", 58 | ">>> ex.b\n", 59 | "'apple'\n", 60 | "```\n" 61 | ] 62 | } 63 | ], 64 | "metadata": { 65 | "jupytext": { 66 | "text_representation": { 67 | "extension": ".md", 68 | "format_name": "markdown", 69 | "format_version": "1.3", 70 | "jupytext_version": "1.13.6" 71 | } 72 | }, 73 | "kernelspec": { 74 | "display_name": "Python 3", 75 | "language": "python", 76 | "name": "python3" 77 | } 78 | }, 79 | "nbformat": 4, 80 | "nbformat_minor": 5 81 | } 82 | -------------------------------------------------------------------------------- /docs_backup/_images/Mem_Consumption_Generator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/Mem_Consumption_Generator.png -------------------------------------------------------------------------------- /docs_backup/_images/Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/Module1_GettingStartedWithPython_Jupyter_Notebooks_10_0.png -------------------------------------------------------------------------------- /docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_14_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_14_0.png -------------------------------------------------------------------------------- /docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_23_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_23_0.png -------------------------------------------------------------------------------- /docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_25_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_25_0.png -------------------------------------------------------------------------------- /docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_27_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_27_0.png -------------------------------------------------------------------------------- /docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_29_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/Module3_IntroducingNumpy_AutoDiff_29_0.png -------------------------------------------------------------------------------- /docs_backup/_images/circle_square_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/circle_square_small.png -------------------------------------------------------------------------------- /docs_backup/_images/ipython_0.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/ipython_0.PNG -------------------------------------------------------------------------------- /docs_backup/_images/ipython_doc1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/ipython_doc1.PNG -------------------------------------------------------------------------------- /docs_backup/_images/ipython_math.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/ipython_math.PNG -------------------------------------------------------------------------------- /docs_backup/_images/ipython_string.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/ipython_string.PNG -------------------------------------------------------------------------------- /docs_backup/_images/jp_docstring.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/jp_docstring.PNG -------------------------------------------------------------------------------- /docs_backup/_images/jp_dropdown.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/jp_dropdown.PNG -------------------------------------------------------------------------------- /docs_backup/_images/jp_files.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/jp_files.PNG -------------------------------------------------------------------------------- /docs_backup/_images/jupyter_early.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/jupyter_early.png -------------------------------------------------------------------------------- /docs_backup/_images/jupyter_login.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/jupyter_login.PNG -------------------------------------------------------------------------------- /docs_backup/_images/pycharm1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_images/pycharm1.png -------------------------------------------------------------------------------- /docs_backup/_sources/Module1_GettingStartedWithPython/SiteFormatting.md.txt: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Overview of formatting in Python Like You Mean It, Difficulty: Easy, Category: Instructions 18 | :keywords: overview, formatting, background, code block, console style 19 | 20 | 21 | 22 | # A Quick Guide to Formatting 23 | This section provides a brief overview of the code formatting style that will be used throughout this text. You are not expected to understand the details of the code, here. This merely provides a guide for what is to come. 24 | 25 | Any code that is included in-line within plain text will be formatted distinctly as so: "the variable `x` was updated...". Such items will be distinguished with backticks wherever such formatting is not available. Take for example the following commented line within Python code: 26 | 27 | ```python 28 | # the variable `x` will be updated 29 | ``` 30 | 31 | Python code will be displayed within distinct, colorized code blocks. These will typically begin with a comment, which is meant to serve as a caption that summarizes the purpose of the code block: 32 | 33 | ```python 34 | # demonstrating a basic for-loop 35 | cnt = 0 36 | for i in range(10): 37 | cnt += 1 38 | 39 | #`cnt` is now 10 40 | ``` 41 | 42 | The symbol `>>>` appears within code blocks to indicate "console-style" code, which distinguishes between code being entered by a user and the resulting output. The purpose of this is that it allows us to easily display the result of a computation without having to rely on calling the `print` function. For instance, the following code assigns the integer `1` to the variable `x`, and then displays the result of `x + 2`: 43 | 44 | ```python 45 | # demonstrating the distinction of 46 | # input and output via >>> 47 | 48 | >>> x = 1 49 | >>> x + 2 50 | 3 51 | ``` 52 | 53 | The code blocks throughout a given section of the text should be understood to be persistent even if there is a mix of "pure" code blocks and "console-style" code blocks. For example, a function may be defined at the beginning of a section, and then referenced throughout the rest of that section: 54 | ```python 55 | # defining an example function 56 | def my_func(x): 57 | return x**2 58 | ``` 59 | 60 | We can spend some time talking about `my_func` and then see it in action: 61 | ```python 62 | # demonstrating `my_func` 63 | >>> my_func(10.) 64 | 100. 65 | ``` 66 | 67 | Lastly, the input and output of an iPython console and a Jupyter notebook alike is displayed as follows: 68 | 69 | ```python 70 | 2 + 3 71 | ``` 72 | 73 | ## Running Code Snippets from this Site 74 | 75 | In PLYMI, we typically precede every code snippet with one or more commented lines. 76 | This is useful because it makes a page more "skimmable", since the code snippets essentially come with 77 | descriptive, self-explanatory captions. 78 | That being said, there is a downside to this. 79 | 80 | Python terminals don't like having multiple comment lines precede an input-prompt. 81 | E.g. if you paste and run the following code into a terminal 82 | 83 | ```python 84 | # demonstrating the distinction of 85 | # input and output via >>> 86 | 87 | >>> x = 1 88 | ``` 89 | 90 | you will get a syntax error. 91 | To fix this issue, simply exclude the comments when you copy this block to your clipboard. 92 | Running 93 | 94 | ```python 95 | >>> x = 1 96 | ``` 97 | 98 | will work without any issue. 99 | Keep this in mind if you ever find yourself having trouble running code that you copied from this site. 100 | 101 | -------------------------------------------------------------------------------- /docs_backup/_sources/Module2_EssentialsOfPython/Problems/Palindrome.md.txt: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Palindrome Exercise, Difficulty: Easy, Category: Practice Problem 18 | :keywords: string, palindrome, practice problem 19 | 20 | 21 | 22 | # Is Palindrome 23 | > A palindrome is a string that reads the same from left to right and from right to left. Strings like `racecar` and `Live on time, emit no evil` are palindromes. Notice that only valid alphanumeric characters are accounted for and that palindromes are not case-sensitive. Given a string, return whether or not it is a palindrome. 24 | 25 | ```python 26 | # example behavior 27 | >>> is_palindrome("Step on no pets!") 28 | True 29 | >>> is_palindrome("'Tis not a palindrome") 30 | False 31 | >>> is_palindrome("Hi, I am Mai Ih") 32 | True 33 | ``` 34 | 35 | ## Tips 36 | [str.isalnum](https://docs.python.org/3/library/stdtypes.html#str.isalnum) returns whether or not a string has purely alphanumeric characters (it works for single-character strings too). 37 | ```python 38 | >>> "I love Python".isalnum() 39 | False 40 | >>> "IlovePython".isalnum() 41 | True 42 | ``` 43 | 44 | Consider using this along with `str.lower` to filter out ignored characters and to normalize all of the character casing in the string before assessing whether or not it is a palindrome. 45 | 46 | 47 | 48 | ## Solution 49 | The simplest solution to this problem is the following, where we make use of the `str.join` function as well as slicing with a negative step: 50 | 51 | ```python 52 | def is_palindrome(input_str): 53 | """ Given a string, determine if it is a palindrome. 54 | Whitespaces, character-casing, and non-alphanumeric 55 | characters are all ignored. 56 | 57 | Parameters 58 | ---------- 59 | s: str 60 | Input string 61 | 62 | Returns 63 | ------- 64 | bool 65 | """ 66 | filtered_str = "".join(c.lower() for c in input_str if c.isalnum()) 67 | return filtered_str == filtered_str[::-1] 68 | ``` 69 | 70 | See that `(c.lower() for c in input_str if c.isalnum())` has the form of a [filtering generator comprehension](https://www.pythonlikeyoumeanit.com/Module2_EssentialsOfPython/Generators_and_Comprehensions.html#Creating-your-own-generator:-generator-comprehensions). Thus, 71 | 72 | ```python 73 | "".join(c.lower() for c in input_str if c.isalnum()) 74 | ``` 75 | is equivalent to the long-form code: 76 | 77 | ```python 78 | filtered_str = "" 79 | for char in input_str: 80 | if char.isalnum(): 81 | filtered_str += char.lower() 82 | ``` 83 | The generator comprehension expression is not only more concise and readable, but its use of `str.join` also makes it a more efficient means for constructing a new list. Each call to `filtered_str += c.lower()` in the long-form code creates a new string in memory, whereas `str.join` forms a single string as it consumes the input iterable. 84 | 85 | Next, [recall that](https://www.pythonlikeyoumeanit.com/Module2_EssentialsOfPython/SequenceTypes.html#Slicing) `seq[::-1]` slices a sequence with a step of -1, which produces the sequence in *reverse order*. Thus `filtered_str == filtered_str[::-1]` allows us to compare the first character in `filtered_str` with the last and so on. This is equivalent to: 86 | 87 | ```python 88 | is_equal = True 89 | for i in range(len(filtered_str)//2): # recall: 5//2 -> 2, 6//2 -> 3 90 | if filtered_str[i] != filtered_str[-(i+1)]: 91 | is_equal = False 92 | break 93 | ``` 94 | 95 | The only downside to using slicing to perform this comparison is that it requires that a copy of `filtered_str` be created, whereas using the explicit for-loop does not. 96 | 97 | We must note that the performance differences pointed out here should only concern us if `is_palindrome` is potentially a performance bottleneck for our code. Although we want the reader to develop an intuition for writing efficient Python code, we discourage mangling code for the sake of premature optimization. 98 | 99 | -------------------------------------------------------------------------------- /docs_backup/_sources/Module3_IntroducingNumpy/BasicArrayAttributes.md.txt: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Numpy array attributes, Difficulty: Easy, Category: Section 18 | :keywords: ndim, shape, size, itemsize, dtype, examples 19 | 20 | 21 | 22 | # Basic Array Attributes 23 | Armed with our understanding of multidimensional NumPy arrays, we now look at methods for programmatically inspecting an array's attributes (e.g. its dimensionality). It is especially important to understand what an array's "shape" is. 24 | 25 | We will use the following array to provide context for our discussion: 26 | 27 | ```python 28 | >>> import numpy as np 29 | >>> example_array = np.array([[[ 0, 1, 2, 3], 30 | ... [ 4, 5, 6, 7]], 31 | ... 32 | ... [[ 8, 9, 10, 11], 33 | ... [12, 13, 14, 15]], 34 | ... 35 | ... [[16, 17, 18, 19], 36 | ... [20, 21, 22, 23]]]) 37 | ``` 38 | According to the preceding discussion, it is a 3-dimensional array structured such that: 39 | 40 | - axis-0 discerns which of the **3 sheets** to select from. 41 | - axis-1 discerns which of the **2 rows**, in any sheet, to select from. 42 | - axis-2 discerns which of the **4 columns**, in any sheet and row, to select from. 43 | 44 | **ndarray.ndim**: 45 | 46 | The number of axes (dimensions) of the array. 47 | 48 | ```python 49 | # dimensionality of the array 50 | >>> example_array.ndim 51 | 3 52 | ``` 53 | 54 | 55 | 56 | **ndarray.shape**: 57 | 58 | A tuple of integers indicating the number of elements that are stored along each dimension of the array. For a 2D-array with $N$ rows and $M$ columns, shape will be $(N, M)$. The length of this shape-tuple is therefore equal to the number of dimensions of the array. 59 | 60 | ```python 61 | # shape of the array 62 | >>> example_array.shape 63 | (3, 2, 4) 64 | ``` 65 | 66 | **ndarray.size**: 67 | 68 | The total number of elements of the array. This is equal to the product of the elements of the array's shape. 69 | ```python 70 | # size of the array: the number of elements it stores 71 | >>> example_array.size 72 | 24 73 | ``` 74 | 75 | **ndarray.dtype**: 76 | 77 | An object describing the data type of the elements in the array. Recall that NumPy's ND-arrays are *homogeneous*: they can only posses numbers of a uniform data type. 78 | 79 | ```python 80 | # `example_array` contains integers, each of which are stored using 32 bits of memory 81 | >>> example_array.dtype 82 | dtype('int32') 83 | ``` 84 | 85 | **ndarray.itemsize**: 86 | 87 | The size, in bytes (8 bits is 1 byte), of each element of the array. For example, an array of elements of type `float64` has itemsize 8 $(= \frac{64}{8})$, while an array of type `complex32` has itemsize 4 $(= \frac{32}{8})$. 88 | ```python 89 | # each integer in `example_array` is represented using 4 bytes (32 bits) of memory 90 | >>> example_array.itemsize 91 | 4 92 | ``` 93 | 94 | 95 | ## Links to Official Documentation 96 | 97 | - [Array attributes](https://numpy.org/doc/stable/reference/arrays.ndarray.html#array-attributes) 98 | -------------------------------------------------------------------------------- /docs_backup/_sources/Module3_IntroducingNumpy/IntroducingTheNDarray.md.txt: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Introduction to numpy arrays, Difficulty: Easy, Category: Section 18 | :keywords: numpy array, ndarray, introduction, overview 19 | 20 | 21 | 22 | # Introducing the ND-array 23 | It is time to start familiarizing ourselves with NumPy, the premiere library for doing numerical work in Python. To use this package, we need to be sure to "import" the NumPy module into our code: 24 | 25 | ```python 26 | import numpy as np 27 | ``` 28 | 29 | You could have run `import numpy` instead, but the prescribed method allows us to use the abbreviation 'np' throughout our code, instead of having to write 'numpy'. This is a very common abbreviation to use. 30 | 31 | The ND-array (N-dimensional array) is the star of the show for NumPy. This array simply stores a sequence of numbers. Like a Python list, you can access individual entries in this array by "indexing" into the array, and you can access a sub-sequence of the array by "slicing" it. So what distinguishes NumPy's ND-array from a Python list, and why is there a whole numerical library that revolves around this array? There are two major features that makes the ND-array special. It can: 32 | 33 | 1. Provide an interface for its underlying data to be accessed along multiple dimensions. 34 | 2. Rapidly perform mathematical operations over all of its elements, or over patterned subsequences of its elements, using compiled C code instead of Python; this is a process called vectorization. 35 | 36 | Let's take a sneak peek to see what this module has in store. The following code creates an ND-array containing the numbers 0-8: 37 | 38 | ```python 39 | >>> import numpy as np 40 | >>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8]) 41 | ``` 42 | 43 | This object belongs to the NumPy-defined type `numpy.ndarray`. 44 | 45 | ```python 46 | # An ND-array belongs to the type `numpy.ndarray` 47 | >>> type(x) 48 | numpy.ndarray 49 | 50 | >>> isinstance(x, np.ndarray) 51 | True 52 | ``` 53 | 54 | 55 | 56 | We can "reshape" this array so that its contents can be accessed along 2 dimensions: 57 | ```python 58 | >>> x = x.reshape(3,3) 59 | >>> x 60 | array([[0, 1, 2], 61 | [3, 4, 5], 62 | [6, 7, 8]]) 63 | ``` 64 | 65 | We will utilize one of NumPy's "vectorized" functions to square each entry in the array (without us needing to write a for-loop) 66 | ```python 67 | >>> np.power(x, 2) # can also be calculated using the shorthand: x**2 68 | array([[ 0, 1, 4], 69 | [ 9, 16, 25], 70 | [36, 49, 64]], dtype=int32) 71 | ``` 72 | 73 | Let's take the mean value along the three distinct rows of our data: 74 | ```python 75 | >>> np.mean(x, axis=1) 76 | array([ 1., 4., 7.]) 77 | ``` 78 | 79 | We can use broadcasting to raise each column of `x` to a different power: 80 | ```python 81 | >>> x ** np.array([0., 1., 2.]) 82 | array([[ 1., 1., 4.], 83 | [ 1., 4., 25.], 84 | [ 1., 7., 64.]]) 85 | ``` 86 | 87 | Basic indexing allows us to access multi-dimensional slices of `x`: 88 | ```python 89 | >>> x[:2, :3] 90 | array([[0, 1, 2], 91 | [3, 4, 5]]) 92 | ``` 93 | 94 | Advanced indexing can be used to access all even-valued entries of `x`; let's update `x` so that all of its even-valued entries are multiplied by -1: 95 | 96 | ```python 97 | >>> x[x % 2 == 0] *= -1 98 | >>> x 99 | array([[ 0, 1, -2], 100 | [ 3, -4, 5], 101 | [-6, 7, -8]]) 102 | ``` 103 | 104 | By the end of this module, these code snippets should make good sense, and NumPy's tremendous utility should be clear. 105 | 106 | 107 | ## Links to Official Documentation 108 | 109 | - [The N-dimensional array](https://numpy.org/doc/stable/reference/arrays.ndarray.html) 110 | - [NumPy Basics](https://numpy.org/doc/stable/user/basics.html#numpy-basics) 111 | - [NumPy reference](https://numpy.org/doc/stable/reference/index.html) 112 | -------------------------------------------------------------------------------- /docs_backup/_sources/Module4_OOP/Brief_Review.md.txt: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | text_representation: 5 | extension: .md 6 | format_name: markdown 7 | format_version: '1.3' 8 | jupytext_version: 1.13.6 9 | kernelspec: 10 | display_name: Python 3 11 | language: python 12 | name: python3 13 | --- 14 | 15 | 16 | .. meta:: 17 | :description: Topic: Brief review of object oriented programming, Difficulty: Easy, Category: Tutorial 18 | :keywords: class definition, simple, examples, overview, init, initialize, type, object 19 | 20 | 21 | 22 | ## A Brief Summary of Terms and Concepts 23 | 24 | Let's do a quick rundown of some of the concepts and terms discussed thus far. The following code is a *class definition*, which specifies the *attributes* of objects that belong to the class/type `Example`. 25 | 26 | ```python 27 | class Example: 28 | a = (1, 2, 3) 29 | 30 | def __init__(self): 31 | self.b = "apple" 32 | ``` 33 | 34 | Once executed, this code produces the *class object* `Example`, which encapsulates the above definition and can be used to create objects that are instances of this class/type. `Example.a` and `Example.__init__` are both attributes of this class. `Example.__init__` is more specifically a special method, which is automatically invoked whenever an instance of this class is created. 35 | 36 | The following code creates an *instance* of `Example`, assigning that instance to the variable `ex`. This means that the object belongs to the type (a.k.a class) `Example`. 37 | 38 | ```python 39 | >>> ex = Example() 40 | 41 | >>> Example.a 42 | (1, 2, 3) 43 | 44 | >>> ex.a 45 | (1, 2, 3) 46 | 47 | >>> isinstance(ex, Example) 48 | True 49 | 50 | >>> type(ex) 51 | __main__.Example 52 | ``` 53 | 54 | Upon this instantiation, the instance-level attribute `b` was defined via execution of the `__init__` method, wherein Python passed the instance object being created as the argument `self` to the method. Thus `b` is an *instance-level* attribute, which is not possessed by `Example` itself. 55 | 56 | ```python 57 | >>> Example.b 58 | AttributeError: type object 'Example' has no attribute 'b' 59 | 60 | >>> ex.b 61 | 'apple' 62 | ``` 63 | 64 | 65 | -------------------------------------------------------------------------------- /docs_backup/_sources/module_1.rst.txt: -------------------------------------------------------------------------------- 1 | Module 1: Getting Started with Python 2 | ===================================== 3 | This module introduces the reader to the Python programming language and to some powerful tools for writing and running Python code. We will discuss what Python is, what it means to be a programming language, as well as what happens when you install Python on your computer. 4 | 5 | Next, we will step through the process of installing Python on our computers. Specifically, we will be installing the Anaconda distribution of Python, which includes critical 3rd party libraries and tools that are essential for doing any STEM-related work (e.g. NumPy, matplotlib, and Jupyter). 6 | 7 | Ready or not, it's time to actually write some code! Armed with our fresh install of Python, we will embark on an informal introduction to the language by dabbling with numbers, messing with strings, and playing with lists. This will allow us to begin building an intuition of what Python's syntax generally looks like and what it feels like to write and run Python code. Module 2 is where we will begin a more careful study of the language. 8 | 9 | Lastly, we will take some time to survey some modern tools for writing and editing Python code. This includes the revolutionary Jupyter notebook, which has become a fantastically popular tool for researchers, data scientists, educators, and students alike. Also presented are two of the most powerful integrated development environments (IDEs) for Python: PyCharm and Visual Studio Code. 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | :caption: Contents: 14 | 15 | Module1_GettingStartedWithPython/SiteFormatting.md 16 | Module1_GettingStartedWithPython/GettingStartedWithPython.md 17 | Module1_GettingStartedWithPython/Installing_Python.md 18 | Module1_GettingStartedWithPython/Informal_Intro_Python.md 19 | Module1_GettingStartedWithPython/Jupyter_Notebooks.md 20 | Module1_GettingStartedWithPython/Getting_Started_With_IDEs_and_Notebooks.md 21 | 22 | -------------------------------------------------------------------------------- /docs_backup/_sources/module_2_problems.rst.txt: -------------------------------------------------------------------------------- 1 | Module 2: Problems 2 | ================== 3 | This section presents the reader with problems to exercise their understanding of the materials that were presented in the Essentials of Python module. They are meant to be worked through after having read through the module in its entirety. Accompanying each problem is a solution and explanation, which include links to the relevant sections of Python Like You Mean It. The solutions are also designed to emphasize good coding practices. 4 | 5 | These problems were written by former students of mine and PLYMI readers. Have you written a piece of code that would make for a good exercise for a Python user? Consider submitting a problem and solution to be included here! 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | :caption: Contents: 11 | 12 | Module2_EssentialsOfPython/Problems/MergeMaxDicts.md 13 | Module2_EssentialsOfPython/Problems/Palindrome.md 14 | Module2_EssentialsOfPython/Problems/MarginPercentage.md 15 | Module2_EssentialsOfPython/Problems/DifferenceFanout.md 16 | Module2_EssentialsOfPython/Problems/EncodeAsString.md 17 | 18 | 19 | -------------------------------------------------------------------------------- /docs_backup/_sources/module_3.rst.txt: -------------------------------------------------------------------------------- 1 | Module 3: The Essentials of NumPy 2 | ================================== 3 | NumPy is the reason why Python stands among the ranks of R, Matlab, and Julia, as one of the most popular languages for doing STEM-related computing. It is a third-party library (i.e. it is not part of Python's standard library) that facilitates numerical computing in Python by providing users with a versatile N-dimensional array object for storing data, and powerful mathematical functions for operating on those arrays of numbers. NumPy implements its features in ways that are highly optimized, via a process known as vectorization, that enables a degree of computational efficiency that is otherwise unachievable by the Python language. 4 | 5 | The impact that NumPy has had on the landscape of numerical computing in Python is hard to overstate. Whether you are plotting data in matplotlib, analyzing tabular data via `pandas `_ and `xarray `_, using `OpenCV `_ for image and video processing, doing astrophysics research with the help of `astropy `_, or trying out machine learning with `Scikit-Learn `_ and `MyGrad `_, you are using Python libraries that bare the indelible mark of NumPy. At their core, each of these libraries depend on NumPy's N-dimensional array and its efficient vectorization capabilities. NumPy also fundamentally impacts the designs of these libraries and the way that they interface with their users. Thus, one cannot leverage these tools effectively, and cannot do STEM work in Python in general, without having a solid foundation in NumPy. 6 | 7 | This module presents to us the essentials of NumPy. We will first define what the term dimensionality means and will develop an intuition for what zero, one, two, and N-dimensional arrays are, and why they are invaluable for data science applications. Next, we will discuss the ambiguities of array traversal-order and NumPy's default use of row-major ordering. We will then arrive at the critical topic of vectorization, which prescribes the ways in which NumPy dispatches mathematical operations over arrays of numbers. This will also give us keen insight into how NumPy achieves its tremendous computational efficiency. Finally, we will dive into some of NumPy's more advanced features. These include its rules for broadcasting mathematical operations between arrays of different shapes, as well as its mechanisms for accessing and updating an array's contents via basic and advanced indexing. Armed with these techniques, we will be able to write concise and powerful numerical code using NumPy and Python's many other STEM libraries! 8 | 9 | 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | :caption: Contents: 14 | 15 | Module3_IntroducingNumpy/IntroducingTheNDarray.md 16 | Module3_IntroducingNumpy/AccessingDataAlongMultipleDimensions.md 17 | Module3_IntroducingNumpy/BasicArrayAttributes.md 18 | Module3_IntroducingNumpy/FunctionsForCreatingNumpyArrays.md 19 | Module3_IntroducingNumpy/ArrayTraversal.md 20 | Module3_IntroducingNumpy/VectorizedOperations.md 21 | Module3_IntroducingNumpy/Broadcasting.md 22 | Module3_IntroducingNumpy/BasicIndexing.md 23 | Module3_IntroducingNumpy/AdvancedIndexing.md 24 | Module3_IntroducingNumpy/AutoDiff.md 25 | -------------------------------------------------------------------------------- /docs_backup/_sources/module_3_problems.rst.txt: -------------------------------------------------------------------------------- 1 | Module 3: Problems 2 | ================== 3 | This section presents the reader with problems to exercise their understanding of the materials that were presented in the Essentials of NumPy module. They are meant to be worked through after having read through the module in its entirety. Accompanying each problem is a solution and explanation, which include links to the relevant sections of Python Like You Mean It. The solutions are also designed to emphasize good coding practices. 4 | 5 | These problems were written by former students of mine and PLYMI readers. Have you written a piece of code that would make for a good exercise for a Python user? Consider submitting a problem and solution to be included here! 6 | 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | :caption: Contents: 11 | 12 | Module3_IntroducingNumpy/Problems/ComputeAccuracy.md 13 | Module3_IntroducingNumpy/Problems/Approximating_pi.ipynb 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /docs_backup/_sources/module_4.rst.txt: -------------------------------------------------------------------------------- 1 | Module 4: Object Oriented Programming 2 | ===================================== 3 | In this module, we will come to see that Python is an object-oriented language. That is, the language is all about defining different types of objects that encapsulate data, and that possess functions that permit users to access and manipulate this data. Our tour through `the essentials of Python `_ and `the essentials of NumPy `_ brought us into contact with various types of objects, such as the :code:`int`, :code:`str`, :code:`list`, :code:`tuple`, :code:`dict`, and the :code:`numpy.ndarray`, to name a few. We have seen that these different types of objects have starkly different functionality from one another. We will study the syntax and constructs for creating and interacting with objects in Python. Ultimately, will find our skill sets as Python-users much fuller and more sophisticated having understood object-oriented programming in Python. 4 | 5 | We begin this module by establishing some key terminology for discussing object-oriented programming, drawing attention to the important fact that the terms 'class' and 'type' mean the same thing in modern Python. Next, we study the syntax for defining a class, and take time to distinguish between the resulting class object and the subsequent class instances that can then be created. Having defined our first custom class of object, we then study the syntax for defining class-methods, which permits us to add customized functionality to our class. Further, we will introduce ourselves to Python's reserved special methods, which empower us to fully interface our class with Python's protocols for behaving like a sequence, an iterable, a function, etc. We conclude this module with a brief discussion of the concept of inheritance, which is a mechanism by which a new class can inherit attributes from an existing class. 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | :caption: Contents: 10 | 11 | Module4_OOP/Introduction_to_OOP.md 12 | Module4_OOP/ClassDefinition.md 13 | Module4_OOP/ClassInstances.md 14 | Module4_OOP/Brief_Review.md 15 | Module4_OOP/Methods.md 16 | Module4_OOP/Applications_of_OOP.md 17 | Module4_OOP/Special_Methods.md 18 | Module4_OOP/Inheritance.md 19 | -------------------------------------------------------------------------------- /docs_backup/_sources/module_5.rst.txt: -------------------------------------------------------------------------------- 1 | Module 5: Odds and Ends 2 | ===================================== 3 | This module contains materials that are extraneous to the essentials of Python as a language and of NumPy, but are nonetheless critical to doing day-to-day work using these tools. 4 | 5 | The first section introduces some general guidelines for writing "good code". Specifically, it points you, the reader, to a style guide that many people in the Python community abide by. It also introduces a relatively new and increasingly-popular feature of Python, called type-hinting, which permits us to enhance our code with type-documentation annotations. The reader will also be introduced to NumPy's and Google's respective specifications for writing good docstrings. 6 | 7 | 8 | The second section of this module introduces matplotlib, a library that allows us to plot and visually inspect data. Here, we will specifically learn how to leverage matplotlib's object-oriented API, as opposed to its functional API, for creating scatter plots, line plots, histograms, and image plots. 9 | 10 | The next section presents the "best practices" for working with files in Python. This includes reading from and writing to files within a context manager. We will learn to leverage the powerful :code:`pathlib.Path` class to work with paths in elegant and platform-independent ways. Finally, we review some critical file utilities, like searching for files with :code:`glob`, saving files with :code:`pickle`, and saving NumPy arrays. 11 | 12 | Moving forward, we will study Python's packaging system, which gives us insight into what the :code:`import` statement is all about. This naturally leads us to consider what it actually means to install a Python package on one's machine. We will review the :code:`pip` and :code:`conda` package managers, which are the two prominent means for installing and managing Python packages on one's machine. This is section will be critical for anyone interesting in maturing from a Jupyter notebook-only Python user to someone who can craft their own installable Python project. It will also greatly improve your ability to troubleshoot Python-related technical issues on your machine. 13 | 14 | More sections will be added to this module down the road. 15 | 16 | .. toctree:: 17 | :maxdepth: 2 18 | :caption: Contents: 19 | 20 | Module5_OddsAndEnds/Writing_Good_Code.md 21 | Module5_OddsAndEnds/Matplotlib.ipynb 22 | Module5_OddsAndEnds/WorkingWithFiles.md 23 | Module5_OddsAndEnds/Modules_and_Packages.md 24 | 25 | -------------------------------------------------------------------------------- /docs_backup/_static/css/badge_only.css: -------------------------------------------------------------------------------- 1 | .fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/Roboto-Slab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/Roboto-Slab-Bold.woff -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/Roboto-Slab-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/Roboto-Slab-Bold.woff2 -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/Roboto-Slab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/Roboto-Slab-Regular.woff -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/Roboto-Slab-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/Roboto-Slab-Regular.woff2 -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/lato-bold-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/lato-bold-italic.woff -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/lato-bold-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/lato-bold-italic.woff2 -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/lato-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/lato-bold.woff -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/lato-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/lato-bold.woff2 -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/lato-normal-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/lato-normal-italic.woff -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/lato-normal-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/lato-normal-italic.woff2 -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/lato-normal.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/lato-normal.woff -------------------------------------------------------------------------------- /docs_backup/_static/css/fonts/lato-normal.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/css/fonts/lato-normal.woff2 -------------------------------------------------------------------------------- /docs_backup/_static/documentation_options.js: -------------------------------------------------------------------------------- 1 | var DOCUMENTATION_OPTIONS = { 2 | URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), 3 | VERSION: '1.4.1', 4 | LANGUAGE: 'None', 5 | COLLAPSE_INDEX: false, 6 | BUILDER: 'html', 7 | FILE_SUFFIX: '.html', 8 | LINK_SUFFIX: '.html', 9 | HAS_SOURCE: true, 10 | SOURCELINK_SUFFIX: '.txt', 11 | NAVIGATION_WITH_KEYS: false 12 | }; -------------------------------------------------------------------------------- /docs_backup/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/file.png -------------------------------------------------------------------------------- /docs_backup/_static/gtag.js: -------------------------------------------------------------------------------- 1 | window.dataLayer = window.dataLayer || []; 2 | function gtag(){dataLayer.push(arguments);} 3 | gtag('js', new Date()); 4 | 5 | gtag('config', 'UA-115029372-1'); 6 | -------------------------------------------------------------------------------- /docs_backup/_static/js/badge_only.js: -------------------------------------------------------------------------------- 1 | !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); -------------------------------------------------------------------------------- /docs_backup/_static/js/html5shiv-printshiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /docs_backup/_static/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /docs_backup/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/minus.png -------------------------------------------------------------------------------- /docs_backup/_static/my_theme.css: -------------------------------------------------------------------------------- 1 | .wy-nav-content { 2 | max-width: 1000px !important; 3 | } 4 | -------------------------------------------------------------------------------- /docs_backup/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/_static/plus.png -------------------------------------------------------------------------------- /docs_backup/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rsokl/Learning_Python/1960302d49f527ebd2fa5a1a3ec3897bcc745cde/docs_backup/objects.inv -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | 2 | sphinx==4.4.0 3 | jupytext==1.13.6 4 | nbsphinx==0.8.8 5 | pandoc==2.1.3 6 | sphinx_rtd_theme==1.0.0 7 | ipykernel==6.7.0 8 | numpy 9 | matplotlib 10 | mygrad 11 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import find_packages, setup 2 | 3 | DISTNAME = "plymi" 4 | LICENSE = "MIT" 5 | AUTHOR = "Ryan Soklaski" 6 | AUTHOR_EMAIL = "ryan.soklaski@gmail.com" 7 | URL = "https://github.com/rsokl/Learning_Python" 8 | CLASSIFIERS = [ 9 | "Development Status :: 5 - Production/Stable", 10 | "License :: OSI Approved :: MIT License", 11 | "Operating System :: OS Independent", 12 | "Intended Audience :: Science/Research", 13 | "Intended Audience :: Education", 14 | "Programming Language :: Python", 15 | "Programming Language :: Python :: 3", 16 | "Topic :: Scientific/Engineering", 17 | ] 18 | 19 | INSTALL_REQUIRES = [] 20 | DESCRIPTION = "Tooling for upgrading PLYMI source material for jupytext" 21 | 22 | 23 | setup( 24 | name=DISTNAME, 25 | package_dir={"": "src"}, 26 | packages=find_packages( 27 | where="src", 28 | exclude=[ 29 | "tests", 30 | "tests.*", 31 | "Python", 32 | "Python.*", 33 | "docs", 34 | "docs.*", 35 | "docs_backup", 36 | "docs_backup.*", 37 | ], 38 | ), 39 | version="1.0", 40 | license=LICENSE, 41 | author=AUTHOR, 42 | author_email=AUTHOR_EMAIL, 43 | classifiers=CLASSIFIERS, 44 | description=DESCRIPTION, 45 | install_requires=INSTALL_REQUIRES, 46 | url=URL, 47 | python_requires=">=3.6", 48 | ) 49 | --------------------------------------------------------------------------------