Python/Python Language

NumPy ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์— ํšจ์œจ์ ์ธ UFUNC ํ•จ์ˆ˜ ๊ฐœ๋…

567Rabbit 2024. 4. 24. 16:33

import numpy as np

 

NumPy ufunc๋Š” ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์„ ์ง€์›ํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด ๊ฐ„์—๋„ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

ufunc๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์†Œ์ˆ˜์  ๋ฐ˜์˜ฌ๋ฆผํ•˜๊ธฐ

Truncation ์ž˜๋ฆผ ์†Œ์ˆ˜์ ์„ ์ œ๊ฑฐํ•˜๊ณ  0์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ๋ฆฌํ„ด trunc์™€ fix์‚ฌ์šฉ 
Rounding : ๋ฐ˜์˜ฌ๋ฆผ ์•ž์˜ ์ˆซ์ž ๋˜๋Š” ์†Œ์ˆ˜์ ์„ 1์”ฉ ์ฆ๊ฐ€
Floor : ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋‚ฎ์€ ์ •์ˆ˜๋กœ ๋‚ด๋ฆผ ์˜ˆ๋ฅผ๋“ค์–ด์„œ 3.16666 -> 3.0
Ceil : ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ƒ์œ„ ์ •์ˆ˜๋กœ ์˜ฌ๋ฆผ ์˜ˆ๋ฅผ๋“ค์–ด์„œ 3.16666 -> 4.0


Logs
2์ง„์ˆ˜ 10์ง„์ˆ˜์—์„œ ๋กœ๊ทธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค
๋กœ๊ทธ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์š”์†Œ์— -inf(๋ฌดํ•œ๋Œ€) ๋˜๋Š” inf(๋ฌดํ•œ๋Œ€)๋ฅผ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค
log2()
log10()
์ž์—ฐ๋กœ๊ทธ : e๋ฅผ ๋ฐ‘์œผ๋กœ ํ•˜๋Š” ๋กœ๊ทธ


cumsum()

- ๋ˆ„์  ํ•ฉ๊ณ„ ์žฌ๊ท€ํ•จ์ˆ˜ 

[1,2,3,4] = [1,1+2,1+2+3,1+2+3+4] ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€๋ถ„ํ•ฉ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค 
suma = np.array([1, 2, 3])   #(fix 1, 3, 6)
newsum = np.cumsum(suma)
print(newsum)


prod()

- Products ๋ฐฐ์—ด ์š”์†Œ์˜ ๊ณฑ
#์˜ˆ์‹œ [1, 2, 3, 4] => 1 * 2 * 3 * 4 ๋‘ ๋ฐฐ์—ด๋กœ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค

axm1 = np.array([1, 2, 3, 4])
axm2 = np.array([5, 6, 7, 8])
x = np.prod([axm1, axm2], axis=1)


cumprod()

- Cummulative Product ๋ˆ„์ ์ œํ’ˆ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ฐ€์ ธ๊ฐ
nu = np.array([5, 6, 7, 8])
newnu = np.cumprod(nu)
print(newnu)

 

 


diff()
์ด์‚ฐ์ฐจ๋ž€ ๋‘ ๊ฐœ์˜ ์—ฐ์†๋œ ์š”์†Œ๋ฅผ ๋นผ๋Š” ๊ฒƒ์„ ์˜๋ฏธ
[1,2,3,4]์˜ ๊ฒฝ์šฐ ์ด์‚ฐ์ฐจ์ด๋Š” [2-1,3-2,4-3]
์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์š”์†Œ์—์„œ ๋บ€๋‹ค
๋งค๊ฐœ๋ณ€์ˆ˜ n์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋บ„ ์ˆ˜ ์žˆ๋‹ค
 

 

.lcm()  .gcd()
LCM (Lowest Common Multiple) ์ตœ์ € ๊ณต๋ฐฐ์ˆ˜ 

# ๋ฐฐ์—ด์— ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์˜ ์ตœ์ € ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์ฐพ์œผ๋ ค๋ฉด np.lcm.reduce()๋ผ๋Š” ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ
GCD (Greatest Common Denomintor) ์ตœ๋Œ€ ๊ณตํ†ต ๋ถ„๋ชจ

# ๋ฐฐ์—ด์—์„œ ๋ชจ๋“  ์ตœ๋Œ€๊ณตํ†ต๋ถ„๋ชจ๋ฅผ ์ฐพ์œผ๋ ค๋ฉด np.gcd.reduce()๋ผ๋Š” ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ

 

 

์‚ผ๊ฐ๋ฒ•

-Trigonometric Functions ์‚ผ๊ฐํ•จ์ˆ˜
-PI/2์˜ ์‚ฌ์ธ ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค

- ๋ผ๋””์•ˆ ๋‹จ์œ„์˜ ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ํ•ด๋‹น sin, cos, tan ์ƒ์„ฑํ•˜๋Š” ufuncs๋ฅผ ์ œ๊ณต

np.sin(np.pi/2)

 


์Œ๊ณก์„ 

-์ง‘ํ•ฉ์—ฐ์‚ฐ : ์ˆ˜ํ•™์—์„œ ์ง‘ํ•ฉ์€ ๊ณ ์œ ํ•œ ์š”์†Œ์˜ ๋ชจ์Œ
-์ง‘ํ•ฉ์€ ๋นˆ๋ฒˆํ•œ ๊ต์ฐจ, ๊ฒฐํ•ฉ ๋ฐ ์ฐจ์ด์—ฐ์‚ฐ๊ณผ ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋œ๋‹ค
-Hyperbolic Functions ๋ผ๋””์•ˆ ๋‹จ์œ„์— ๊ฐ’์„ sinh, cosh, tanh๋ฅผ ์ œ๊ณต

-๋ผ๋””์•ˆ ๋‹จ์œ„์˜ ๊ฐ’์„ ๊ฐ€์ ธ์™€ sinh, cosh, tanh ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ufuncs๋ฅผ ์ œ๊ณต
np.sinh(np.pi/2)


unique()

Set Operations  ๊ณ ์œ ํ•œ ์š”์†Œ์˜ ๋ชจ์Œ์„ ์ฐพ์Šต๋‹ˆ๋‹ค
np.unique(re)

 

 


union1d()
-finding Union
-๊ต์ฐจ์  ๋‘ ๋ฐฐ์—ด ๋ชจ๋‘์— ์กด์žฌํ•˜๋Š” ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด intersect1d()๋ฅผ ์‚ฌ์šฉ

-assume_unique๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค 
np.union1d(u1, u2)
np.intersect1d(u1, u2, assume_unique=True)