General-purpose, high-level programming language supporting multiple programming paradigms.
There are lot of libraries for scientific computation and visualization available in Fedora. Well known and widely used is SciPy Stack which consists of
NumPy is a high performance Python library providing fast multidimensional arrays featuring vector operations.
NumPy can be installed in Fedora by typing:
$ sudo dnf install python3-numpy
What are vector operations? The ones which are applied on multiple values at once:
>>> import numpy as np >>> A = np.array([[1, 2], [3, 4]]) >>> A array([[1, 2], [3, 4]]) >>> A+1 array([[2, 3], [4, 5]]) >>> -1*A array([[-1, -2], [-3, -4]]) >>> A**2 array([[ 1, 4], [ 9, 16]]) >>> A[0,:] array([1, 2]) >>> A[0,:]=0 >>> A array([[0, 0], [3, 4]])
NumPy also provides additional mathematical functions like
sum and others.
>>> np.sin([0, np.pi/6, np.pi/2]) array([ 0. , 0.5, 1. ]) >>> 2*np.arcsin([0, 1]) array([ 0. , 3.14159265])
NumPy includes some handy shortcuts:
>>> np.zeros((3, 3)) array([[ 0., 0., 0.], [ 0., 0., 0.], [ 0., 0., 0.]]) >>> np.ones((3, 3)) array([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]]) >>> np.ones((3, 1)) array([[ 1.], [ 1.], [ 1.]]) >>> np.zeros_like(np.ones((1, 3))) array([[ 0., 0., 0.]])
SciPy is a Python library providing routines for basic and special mathematical functions, numerical integration, optimization, interpolation, Fourier transform, signal processing, routines for linear algebra, statistics and others. See a full SciPy reference.
To install it, type:
$ sudo dnf install python3-scipy
To compute, for example, the definite integral of 2x from 0 to 1 (which equals 1), type:
>>> import scipy.integrate >>> scipy.integrate.quad(lambda x: 2*x, 0, 1) (1.0, 1.1102230246251565e-14)
matplotlib is a graph plotting library producing publication-quality plots.
To install it, type:
$ sudo dnf install python3-matplotlib
Test it by typing:
>>> import matplotlib.pyplot as plt >>> plt.ion() >>> plt.plot([1, 2, 3], [10, 20, 30], 'ro--') >>> plt.title("Hello, matplotlib!")
You should see the plot already.
See lots of other examples at a showcases gallery:
IPython is a rich Python interpreter aiming at high-quality user experience for interactive computing and data visualization. Its main features are a tab completion, integration of commands for filesystem access, object introspection and others. IPython provides the kernel for the Jupyter project.
To install and run IPython, type:
$ sudo dnf install python3-ipython
$ ipython3 Python 3.5.1 (default, Mar 4 2016, 15:21:15) Type "copyright", "credits" or "license" for more information. IPython 3.2.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In : print("Hello, world!") Hello, world!
Pandas is a Python library implementing a data type to store data series and relevant routines:
$ sudo dnf install python3-pandas
Let us load famous Iris dataset, which is used a lot as an example in pattern recognition and machine learning literature.
import pandas as pd iris_data_set_url = ("http://archive.ics.uci.edu/ml/" "machine-learning-databases/iris/iris.data") # pandas likes CSV files, it can read them from file or provided URL my_first_pandas_DataFrame = pd.read_csv(iris_data_set_url, header=None) # See! print("Pandas DataFrame:") print(my_first_pandas_DataFrame) # Let us find a record with maximal value in the first column print(my_first_pandas_DataFrame.max(0))
See more on its usage in a pandas tutorial.
SymPy extends SciPy with symbolic computation capabilities, i.e. manipulation with algebraic variables, symbols and precise values.
First, install SymPy by running:
$ sudo dnf install python3-sympy
and then your journey to the realm of CAS (Computer Algebra System) can begin:
>>> import sympy >>> sympy.sqrt(8) 2*sqrt(2) >>> from sympy import symbols, exp, integrate, oo, diff >>> x = symbols('x') >>> integrate(exp(-x), (x, 0, +oo)) 1 >>> integrate(exp(-x), (x, -oo, +oo)) oo >>> diff(exp(-x)) -exp(-x)
Run and share live code via the browser; uses include: data cleaning and transformation, numerical simulation, statistical modeling, machine learning.
First install Jupyter Notebook:
$ sudo dnf install notebook
To start a notebook server run:
$ jupyter notebook
Next select the dropdown New then Python 3 to create a new notebook.
NumPy, Pandas, SciPy and IPython are included with the install of Jupyter Notebook.