SciPy

SciPy is an open-source, scientific computation library for mathematics, science and engineering. Uses NumPy underneath and rovides more utility functions for optimization, stats and signal processing.

Similar to Numpy, in order to start programming with this library we need to “switch it on”, which means ‘pip install’ on terminal:

and check if it works:
Lets try some simple options offered in SciPy, like constant values:
from scipy import constants as const

print(const.pi)
print(const.day)
print(const.kilo)
print(const.light_year)
print(const.micro)
print(const.tera)
print(const.e)
print(const.eV)
#Spars Data
import numpy as np
from scipy.sparse import csr_matrix

arr1 = np.array([0,1,2,3,4,5,6,7,8,9])
print(arr1)
print(csr_matrix(arr1))

arr2 = np.array([0,0,0,0,0,1,1,2,2,3])
print(arr2)
print(csr_matrix(arr2))

arr3 = np.array([[0, 0, 0], [0, 0, 1], [1, 2, 2]])
print(arr3)
print(csr_matrix(arr3).data)
print(csr_matrix(arr3).count_nonzero())

arr4 = np.array([[0, 0, 0], [0, 0, 1], [1, 0, 2]])
arr4 = csr_matrix(arr4).tocsc()
print(arr4)

Let’s try with some data. Write some numbers, f.e:

156,158,167,188,197,167,197,178,186,157,198,199,178,168,156,151,167,167

in one line in notepad, save it and copy into PyCharm:

#SciPy stats
import numpy as np
import scipy.stats as scs

#T-test
data = np.loadtxt("Numbers.csv", delimiter=',', skiprows=0, unpack=True)
print(data)
results = scs.ttest_1samp(data,160)
print(results)

p = 0.3
data = scs.bernoulli.rvs(p, size=100)
mean, var, skew, kurt = scs.bernoulli.stats(p, moments = 'mvsk')
print(data)
#normality test shapiro-wilk 
import scipy.stats as sps
random_data = sps.norm.rvs(size=1000)
shapiro_test_results = sps.shapiro(random_data)
print(shapiro_test_results)

#kolmogorov smirnov
random_data = sps.norm.rvs(size=1000)
KS_test_results = sps.kstest(random_data,'norm')
print(KS_test_results)

#Levene test
normal_data = sps.norm.rvs(size=1000)
normal_data1 = sps.norm.rvs(size=1000)
normal_data2 = sps.norm.rvs(loc=1, scale=20, size=1000)
levene_test_results = sps.levene(normal_data, normal_data1, normal_data2)
print(levene_test_results)

#Bartlett test
normal_data = sps.norm.rvs(size=1000)
normal_data1 = sps.norm.rvs(size=1000)
normal_data2 = sps.norm.rvs(loc=1, scale=20, size=1000)
bartlett_test_results = sps.bartlett(normal_data, normal_data1, normal_data2)
print(bartlett_test_results)