@@ -235,7 +235,7 @@ Even if you don't yet know Python, you can see that the code is far simpler and
235235import csv
236236237237total, count = 0, 0
238-with open(data.csv, mode='r') as file:
238+with open('data.csv', mode='r') as file:
239239 reader = csv.reader(file)
240240 for row in reader:
241241 try:
@@ -311,7 +311,7 @@ But when we want to work with larger arrays in real programs we need more effici
311311For this we need to use libraries for working with arrays.
312312313313For Python, the most important matrix and array processing library is
314-[NumPy](http://www.numpy.org/) library.
314+[NumPy](https://www.numpy.org/) library.
315315316316For example, let's build a NumPy array with 100 elements
317317@@ -365,7 +365,7 @@ This lecture series will provide you with extensive background in NumPy.
365365366366### SciPy
367367368-The [SciPy](http://www.scipy.org) library is built on top of NumPy and provides additional functionality.
368+The [SciPy](https://www.scipy.org) library is built on top of NumPy and provides additional functionality.
369369370370(tuple_unpacking_example)=
371371For example, let's calculate $\int_{-2}^2 \phi(z) dz$ where $\phi$ is the standard normal density.
@@ -381,14 +381,14 @@ value
381381382382SciPy includes many of the standard routines used in
383383384-* [linear algebra](http://docs.scipy.org/doc/scipy/reference/linalg.html)
385-* [integration](http://docs.scipy.org/doc/scipy/reference/integrate.html)
386-* [interpolation](http://docs.scipy.org/doc/scipy/reference/interpolate.html)
387-* [optimization](http://docs.scipy.org/doc/scipy/reference/optimize.html)
388-* [distributions and statistical techniques](http://docs.scipy.org/doc/scipy/reference/stats.html)
389-* [signal processing](http://docs.scipy.org/doc/scipy/reference/signal.html)
384+* [linear algebra](https://docs.scipy.org/doc/scipy/reference/linalg.html)
385+* [integration](https://docs.scipy.org/doc/scipy/reference/integrate.html)
386+* [interpolation](https://docs.scipy.org/doc/scipy/reference/interpolate.html)
387+* [optimization](https://docs.scipy.org/doc/scipy/reference/optimize.html)
388+* [distributions and statistical techniques](https://docs.scipy.org/doc/scipy/reference/stats.html)
389+* [signal processing](https://docs.scipy.org/doc/scipy/reference/signal.html)
390390391-See them all [here](http://docs.scipy.org/doc/scipy/reference/index.html).
391+See them all [here](https://docs.scipy.org/doc/scipy/reference/index.html).
392392393393Later we'll discuss SciPy in more detail.
394394@@ -400,7 +400,7 @@ Later we'll discuss SciPy in more detail.
400400401401A major strength of Python is data visualization.
402402403-The most popular and comprehensive Python library for creating figures and graphs is [Matplotlib](http://matplotlib.org/), with functionality including
403+The most popular and comprehensive Python library for creating figures and graphs is [Matplotlib](https://matplotlib.org/), with functionality including
404404405405* plots, histograms, contour images, 3D graphs, bar charts etc.
406406* output in many formats (PDF, PNG, EPS, etc.)
@@ -427,10 +427,10 @@ More examples can be found in the [Matplotlib thumbnail gallery](https://matplot
427427428428Other graphics libraries include
429429430-* [Plotly](https://plot.ly/python/)
430+* [Plotly](https://plotly.com/python/)
431431* [seaborn](https://seaborn.pydata.org/) --- a high-level interface for matplotlib
432432* [Altair](https://altair-viz.github.io/)
433-* [Bokeh](http://bokeh.pydata.org/en/latest/)
433+* [Bokeh](https://bokeh.pydata.org/en/latest/)
434434435435You can visit the [Python Graph Gallery](https://www.python-graph-gallery.com/) for more example plots drawn using a variety of libraries.
436436@@ -452,7 +452,7 @@ Python has many libraries for studying networks and graphs.
452452```{index} single: NetworkX
453453```
454454455-One well-known example is [NetworkX](http://networkx.github.io/).
455+One well-known example is [NetworkX](https://networkx.org/).
456456457457Its features include, among many other things:
458458@@ -503,14 +503,14 @@ firms.
503503Here's a short list of some important scientific libraries for Python not
504504mentioned above.
505505506-* [SymPy](http://www.sympy.org/) for symbolic algebra, including limits, derivatives and integrals
507-* [statsmodels](http://statsmodels.sourceforge.net/) for statistical routines
508-* [scikit-learn](http://scikit-learn.org/) for machine learning
506+* [SymPy](https://www.sympy.org/) for symbolic algebra, including limits, derivatives and integrals
507+* [statsmodels](https://www.statsmodels.org/) for statistical routines
508+* [scikit-learn](https://scikit-learn.org/) for machine learning
509509* [Keras](https://keras.io/) for machine learning
510-* [Pyro](https://pyro.ai/) and [PyStan](https://pystan.readthedocs.org/en/latest/) for Bayesian data analysis
510+* [Pyro](https://pyro.ai/) and [PyStan](https://pystan.readthedocs.io/en/latest/) for Bayesian data analysis
511511* [GeoPandas](https://geopandas.org/en/stable/) for spatial data analysis
512512* [Dask](https://docs.dask.org/en/stable/) for parallelization
513-* [Numba](http://numba.pydata.org/) for making Python run at the same speed as native machine code
513+* [Numba](https://numba.pydata.org/) for making Python run at the same speed as native machine code
514514* [CVXPY](https://www.cvxpy.org/) for convex optimization
515515* [scikit-image](https://scikit-image.org/) and [OpenCV](https://opencv.org/) for processing and analyzing image data
516516* [BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/) for extracting data from HTML and XML files