mirror of
https://hub.njuu.cf/TheAlgorithms/Python.git
synced 2023-10-11 13:06:12 +08:00
Adds Gaussian Function in maths section (#1054)
* Create gaussian.py * Update gaussian.py * Update gaussian.py * Create gaussian.png * Add files via upload * Create prime_factors.py * Update prime_factors.py * Update prime_factors.py
This commit is contained in:
parent
f5e6d4e8cd
commit
61fec83242
61
maths/gaussian.py
Normal file
61
maths/gaussian.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
"""
|
||||||
|
Reference: https://en.wikipedia.org/wiki/Gaussian_function
|
||||||
|
|
||||||
|
python/black : True
|
||||||
|
python : 3.7.3
|
||||||
|
|
||||||
|
"""
|
||||||
|
from numpy import pi, sqrt, exp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def gaussian(x, mu: float = 0.0, sigma: float = 1.0) -> int:
|
||||||
|
"""
|
||||||
|
>>> gaussian(1)
|
||||||
|
0.24197072451914337
|
||||||
|
|
||||||
|
>>> gaussian(24)
|
||||||
|
3.342714441794458e-126
|
||||||
|
|
||||||
|
Supports NumPy Arrays
|
||||||
|
Use numpy.meshgrid with this to generate gaussian blur on images.
|
||||||
|
>>> import numpy as np
|
||||||
|
>>> x = np.arange(15)
|
||||||
|
>>> gaussian(x)
|
||||||
|
array([3.98942280e-01, 2.41970725e-01, 5.39909665e-02, 4.43184841e-03,
|
||||||
|
1.33830226e-04, 1.48671951e-06, 6.07588285e-09, 9.13472041e-12,
|
||||||
|
5.05227108e-15, 1.02797736e-18, 7.69459863e-23, 2.11881925e-27,
|
||||||
|
2.14638374e-32, 7.99882776e-38, 1.09660656e-43])
|
||||||
|
|
||||||
|
>>> gaussian(15)
|
||||||
|
5.530709549844416e-50
|
||||||
|
|
||||||
|
>>> gaussian([1,2, 'string'])
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
TypeError: unsupported operand type(s) for -: 'list' and 'float'
|
||||||
|
|
||||||
|
>>> gaussian('hello world')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
TypeError: unsupported operand type(s) for -: 'str' and 'float'
|
||||||
|
|
||||||
|
>>> gaussian(10**234) # doctest: +IGNORE_EXCEPTION_DETAIL
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
OverflowError: (34, 'Result too large')
|
||||||
|
|
||||||
|
>>> gaussian(10**-326)
|
||||||
|
0.3989422804014327
|
||||||
|
|
||||||
|
>>> gaussian(2523, mu=234234, sigma=3425)
|
||||||
|
0.0
|
||||||
|
"""
|
||||||
|
return 1 / sqrt(2 * pi * sigma ** 2) * exp(-(x - mu) ** 2 / 2 * sigma ** 2)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import doctest
|
||||||
|
|
||||||
|
doctest.testmod()
|
BIN
maths/images/gaussian.png
Normal file
BIN
maths/images/gaussian.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
52
maths/prime_factors.py
Normal file
52
maths/prime_factors.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
"""
|
||||||
|
python/black : True
|
||||||
|
"""
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
|
||||||
|
def prime_factors(n: int) -> List[int]:
|
||||||
|
"""
|
||||||
|
Returns prime factors of n as a list.
|
||||||
|
|
||||||
|
>>> prime_factors(0)
|
||||||
|
[]
|
||||||
|
>>> prime_factors(100)
|
||||||
|
[2, 2, 5, 5]
|
||||||
|
>>> prime_factors(2560)
|
||||||
|
[2, 2, 2, 2, 2, 2, 2, 2, 2, 5]
|
||||||
|
>>> prime_factors(10**-2)
|
||||||
|
[]
|
||||||
|
>>> prime_factors(0.02)
|
||||||
|
[]
|
||||||
|
>>> x = prime_factors(10**241) # doctest: +NORMALIZE_WHITESPACE
|
||||||
|
>>> x == [2]*241 + [5]*241
|
||||||
|
True
|
||||||
|
>>> prime_factors(10**-354)
|
||||||
|
[]
|
||||||
|
>>> prime_factors('hello')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
TypeError: '<=' not supported between instances of 'int' and 'str'
|
||||||
|
>>> prime_factors([1,2,'hello'])
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
TypeError: '<=' not supported between instances of 'int' and 'list'
|
||||||
|
|
||||||
|
"""
|
||||||
|
i = 2
|
||||||
|
factors = []
|
||||||
|
while i * i <= n:
|
||||||
|
if n % i:
|
||||||
|
i += 1
|
||||||
|
else:
|
||||||
|
n //= i
|
||||||
|
factors.append(i)
|
||||||
|
if n > 1:
|
||||||
|
factors.append(n)
|
||||||
|
return factors
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
import doctest
|
||||||
|
|
||||||
|
doctest.testmod()
|
Loading…
Reference in New Issue
Block a user