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:


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)
