๋ฐฐ์ด ์ฐ์ฐ
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๋ ๋ฌธ์ ์์ด ์ํ๋๋ค.
๋ ๋ฐฐ์ด์ ๋ธ๋ก๋์บ์คํ ์ ์๋์ ๊ท์น์ ๋ฐ๋ฅธ๋ค:
- ๋ ๋ฐฐ์ด์ด ๋์ผํ rank๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค๋ฉด, ๋ฎ์ rank์ ๋ฐฐ์ด์ shape์์ 1์ ์ฐ์์ ์ผ๋ก ์ถ๊ฐํ์ฌ ๋ ๋ฐฐ์ด์ rank๋ฅผ ๋์ผํ๊ฒ ๋ง๋ ๋ค.
- ํน์ ์ฐจ์์์ ๋ ๋ฐฐ์ด์ด ๋์ผํ ํฌ๊ธฐ๋ฅผ ๊ฐ๊ฑฐ๋, ๋ ๋ฐฐ์ด ์ค ํ๋์ ํฌ๊ธฐ๊ฐ 1์ด๋ผ๋ฉด ๊ทธ ๋ ๋ฐฐ์ด์ ๊ทธ ์ฐจ์์์ compatibleํ๋ค๊ณ ํ๋ค.
- ๋ ํ๋ ฌ์ด ๋ชจ๋ ์ฐจ์์์ compatibleํ๋ค๋ฉด, ๋ธ๋ก๋์บ์คํ ์ด ๊ฐ๋ฅํ๋ค.
- ๋ธ๋ก๋์บ์คํ ์ด ์ด๋ค์ง๋ฉด, ๋ ๋ฐฐ์ด shape์ ์์๋ณ ์ต๋๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง shape์ด ๋ ๋ฐฐ์ด์ shape์ผ๋ก ๊ฐ์ฃผ๋๋ค.
- ์ฐจ์์ ์๊ด์์ด ํฌ๊ธฐ๊ฐ 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 |