[Python] Numpy - ๋ฐฐ์—ด ์—ฐ์‚ฐ(Array math), ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…(Broadcasting)

2020. 9. 19. 15:38ยท๊ฐœ๋ฐœ ํƒ€์ž„์บก์А/Python

๋ฐฐ์—ด ์—ฐ์‚ฐ

Numpy ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์‚ฌ์น™์—ฐ์‚ฐ์€ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ณ„๋กœ ๋™์ž‘ํ•œ๋‹ค.

x = np.array([[1, 2], [3, 4]], dtype=np.float64)
y = np.array([[5, 6], [7, 8]], dtype=np.float64)

 

+

print(x + y)
#[[ 6.  8.]
#[10. 12.]]

print(np.add(x, y))
#[[ 6.  8.]
#[10. 12.]]

 

-

print(x - y)
#[[-4. -4.]
#[-4. -4.]]
 
print(np.subtract(x, y)) 
#[[-4. -4.]
#[-4. -4.]]
 

 

*

print(x * y)
#[[ 5. 12.]
#[21. 32.]]

print(np.multiply(x, y))
#[[ 5. 12.]
#[21. 32.]]

์ฐธ๊ณ  : *๋Š” ํ–‰๋ ฌ ๊ณฑ์ด ์•„๋‹ˆ๋ผ ์š”์†Œ๋ณ„ ๊ณฑ์ด๋‹ค.

 

/

print(x / y)
#[[0.2        0.33333333]
#[0.42857143 0.5       ]]

print(np.divide(x, y))
#[[0.2        0.33333333]
#[0.42857143 0.5       ]]

 

sqrt

print(np.sqrt(x))
#[[1.         1.41421356]
#[1.73205081 2.        ]]

 


Numpy์—์„œ ๋ฒกํ„ฐ์˜ ๋‚ด์ , ๋ฒกํ„ฐ์™€ ํ–‰๋ ฌ์˜ ๊ณฑ์„ ์œ„ํ•ด์„œ๋Š” *๋Œ€์‹  'dot'ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

x = np.array([[1, 2], [3, 4]])
y = np.array([[5, 6], [7, 8]])

v = np.array([9, 10])
w = np.array([11, 12])
print(x.dot(y))
#[[19 22]
#[43 50]]

print(x.dot(v))
#[29 67]

print(v.dot(w)) //๋™์ผํ•œ ์‹ print(np.dot(v, w))
#219

 

@์—ฐ์‚ฐ์ž๋Š” numpy์˜ dot์—ฐ์‚ฐ์ž์™€ ๋™์ผํ•˜๋‹ค.

print(v @ w)
#219

 

Numpy๋Š” sum, max, min, mean, std๋“ฑ์˜ ์œ ์šฉํ•œ ํ•จ์ˆ˜๋“ค๋„ ์ œ๊ณตํ•œ๋‹ค.

x = np.array([[1, 2],
              [3, 4]])
              
print(np.sum(x))
#10

print(np.sum(x, axis = 0))
#[4, 6]

print(np.sum(x, axis = 1))
#[3, 7]

ํ–‰์˜ ํ•ฉ์ด๋‚˜ ์—ด์˜ ํ•ฉ ๊ฐ™์ด ํŠน์ • ์ถ•์— ๋Œ€ํ•œ ํ•ฉ์„ ๊ตฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

print(np.max(x)) #์ตœ๋Œ€๊ฐ’
print(np.min(x)) #์ตœ์†Œ๊ฐ’
print(np.mean(x)) #ํ‰๊ท 
print(np.std(x)) #ํ‘œ์ค€ํŽธ์ฐจ

#4
#1
#2.5
#1.118033988749895

๋‚˜๋จธ์ง€ ํ•จ์ˆ˜๋“ค ์—ญ์‹œ ํŠน์ • ์ถ•์— ๋Œ€ํ•œ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

print(x.T)

#[[1 3]
#[2 4]]

.T๋ฅผ ์ด์šฉํ•ด ์ „์น˜ํ–‰๋ ฌ๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.


Broadcasting

๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์€ numpy์—์„œ shape์ด ๋‹ค๋ฅธ ๋ฐฐ์—ด ๊ฐ„์—๋„ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›์†Œ์— ์Šค์นผ๋ผ ๊ฐ’์„ ๋”ํ•˜๊ฑฐ๋‚˜ ๊ณฑํ•˜๊ฑฐ๋‚˜, ํ˜น์€ ํ–‰๋ ฌ์˜ ๊ฐ ํ–‰์— ์ƒ์ˆ˜ ๋ฒกํ„ฐ๋ฅผ ๋”ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ๋“ฑ์ด ์žˆ๋‹ค.

x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])

print(x + 2)
print(x * 2)

#[[ 3  4  5]
#[ 6  7  8]
#[ 9 10 11]
#[12 13 14]]

#[[ 2  4  6]
#[ 8 10 12]
#[14 16 18]
#[20 22 24]]

v = np.array([1, 0, 1])
y = x + v
print(y)

#[[ 2  2  4]
#[ 5  5  7]
#[ 8  8 10]
#[11 11 13]]

x์˜ shape์ด (4, 3), v์˜ shape์ด (3, )๋ผ๋„ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์œผ๋กœ ์ธํ•ด y = x + v๋Š” ๋ฌธ์ œ ์—†์ด ์ˆ˜ํ–‰๋œ๋‹ค.

 

๋‘ ๋ฐฐ์—ด์˜ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์€ ์•„๋ž˜์˜ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค:

  1. ๋‘ ๋ฐฐ์—ด์ด ๋™์ผํ•œ rank๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด, ๋‚ฎ์€ rank์˜ ๋ฐฐ์—ด์˜ shape์•ž์— 1์„ ์—ฐ์†์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ๋‘ ๋ฐฐ์—ด์˜ rank๋ฅผ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
  2. ํŠน์ • ์ฐจ์›์—์„œ ๋‘ ๋ฐฐ์—ด์ด ๋™์ผํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ฑฐ๋‚˜, ๋‘ ๋ฐฐ์—ด ์ค‘ ํ•˜๋‚˜์˜ ํฌ๊ธฐ๊ฐ€ 1์ด๋ผ๋ฉด ๊ทธ ๋‘ ๋ฐฐ์—ด์€ ๊ทธ ์ฐจ์›์—์„œ compatibleํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.
  3. ๋‘ ํ–‰๋ ฌ์ด ๋ชจ๋“  ์ฐจ์›์—์„œ compatibleํ•˜๋‹ค๋ฉด, ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  4. ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์ด ์ด๋ค„์ง€๋ฉด, ๋‘ ๋ฐฐ์—ด shape์˜ ์š”์†Œ๋ณ„ ์ตœ๋Œ€๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ shape์ด ๋‘ ๋ฐฐ์—ด์˜ shape์œผ๋กœ ๊ฐ„์ฃผ๋œ๋‹ค.
  5. ์ฐจ์›์— ์ƒ๊ด€์—†์ด ํฌ๊ธฐ๊ฐ€ 1์ธ ๋ฐฐ์—ด๊ณผ 1๋ณด๋‹ค ํฐ ๋ฐฐ์—ด์ด ์žˆ์„ ๋•Œ, ํฌ๊ธฐ๊ฐ€ 1์ธ ๋ฐฐ์—ด์€ ์ž์‹ ์˜ ์ฐจ์› ์ˆ˜๋งŒํผ ๋ณต์‚ฌ๋˜์–ด ์Œ“์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ„์ฃผํ•œ๋‹ค.

'๊ฐœ๋ฐœ ํƒ€์ž„์บก์А > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] Matplotlib ๊ธฐ์ดˆ ์ •๋ฆฌ  (0) 2020.09.20
[Python] Numpy - ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ(Array Indexing)  (0) 2020.09.19
[Python] Numpy - ๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ  (0) 2020.09.19
[Python] Numpy - ๋ฐฐ์—ด ์Šฌ๋ผ์ด์‹ฑ(slicing)  (0) 2020.09.18
[Python] Numpy - ๋ฐฐ์—ด reshape  (0) 2020.09.18
'๊ฐœ๋ฐœ ํƒ€์ž„์บก์А/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Python] Matplotlib ๊ธฐ์ดˆ ์ •๋ฆฌ
  • [Python] Numpy - ๋ฐฐ์—ด ์ธ๋ฑ์‹ฑ(Array Indexing)
  • [Python] Numpy - ๋ฐฐ์—ด ํ•ฉ์น˜๊ธฐ
  • [Python] Numpy - ๋ฐฐ์—ด ์Šฌ๋ผ์ด์‹ฑ(slicing)
๐ŸฅญMango
๐ŸฅญMango
  • ๐ŸฅญMango
    AppleMango๐Ÿฅญ
    ๐ŸฅญMango
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • iOS
        • Swift
        • SwiftUI
        • RxSwift
      • Algorithm
        • C
        • Python
        • Swift
      • Computer Science
        • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ
        • OS
      • ...
      • ๊ฐœ๋ฐœ ํƒ€์ž„์บก์А
        • Python
        • Flutter
        • Android
        • Kotlin
        • Java
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    swiftUI Gradients
    SwiftUI
    ํ† ๋งˆํ† 
    MapMarker
    ํŒŒ์ด์ฌ 14503
    Code Base
    IOS
    ํŒŒ์ด์ฌ ์ •๋ ฌ
    ๋ฐฑ์ค€ ํ† ๋งˆํ† 
    1613 ํŒŒ์ด์ฌ
    6118
    ๋ฐฑ์ค€ ์†Œ์ˆ˜
    swiftUI tabview
    ์ฝ”ํ‹€๋ฆฐ ์ƒ์†
    Swift Hello World!
    1613 ์—ญ์‚ฌ
    typing animation
    14503 ํŒŒ์ด์ฌ
    ์Šคํƒ
    ํŒŒ์ด์ฌ ํ† ๋งˆํ† 
    ์ฝ”ํ‹€๋ฆฐ
    ํŒŒ์ด์ฌ
    14503 ๋กœ๋ด‡์ฒญ์†Œ๊ธฐ
    1์ฐจ์› ๋ฟŒ์š”๋ฟŒ์š”
    ํŒŒ์ด์ฌ 6118
    SwiftUI Apple Login
    ํŒŒ์ด์ฌ 1459
    Custom Map Marker
    ์—ญ์‚ฌ ํŒŒ์ด์ฌ
    Apple Login
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.2
๐ŸฅญMango
[Python] Numpy - ๋ฐฐ์—ด ์—ฐ์‚ฐ(Array math), ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…(Broadcasting)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”