np.add() : 덧셈np.subtract() : 뺄셈np.multiply() : 곱셈np.divide() : 나눗셈np.sum() 또는 ndarray.sum()sumarr = np.array([
[1, 2, 3],
[4, 5, 6]
])
print(arr)
print(arr.shape)
[[1 2 3]
[4 5 6]]
(2, 3) # 2행 3열
axis = None : 배열의 모든 원소의 합np.sum(arr, axis=None) # 21axis = 0 : 행 압축 → 열 안의 원소끼리 더함np.sum(arr, axis=0) # [5 7 9]axis = 1 : 열 압축 → 행 안의 원소끼리 더함np.sum(arr, axis=1) # [ 6 15]sumarr = np.array([
[[1, 2, 3],
[4, 5, 6]],
[[10, 20, 30],
[40, 50, 60]]
])
print(arr)
print(arr.shape)
[[[ 1 2 3]
[ 4 5 6]]
[[10 20 30]
[40 50 60]]]
(2, 2, 3)
# 2깊이 2행 3열
# 2개의 2행 3열
axis = None : 배열의 모든 원소의 합np.sum(arr, axis=None) # 231axis = 0 : 차원 압축 → 같은 자리의 원소끼리 더함np.sum(arr, axis=0)
# [[11 22 33]
# [44 55 66]]axis = 1 : 각 차원의 행 압축 → 열 안의 원소끼리 더함np.sum(arr, axis=0)
# [[ 5 7 9]
# [50 70 90]]axis = 2 : 열 압축 → 행 안의 원소끼리 더함np.sum(arr, axis=1)
# [[ 6 15]
# [ 60 150]]np.min() 또는 ndarray.min()arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
axis = None : 전체 배열 내의 최솟값np.min(arr, axis=None) # 1axis = 0 : 최솟값을 갖는 행np.min(arr, axis=0) # [1 2 3]axis = 1 : 최솟값을 갖는 열np.min(arr, axis=1) # [1 4 7]np.max() 또는 ndarray.max()arr = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
axis = None : 전체 배열 내의 최댓값np.max(arr, axis=None) # 9axis = 0 : 최댓값을 갖는 행np.max(arr, axis=0) # [7 8 9]axis = 1 : 최댓값을 갖는 열np.max(arr, axis=1) # [3 6 9]
| L1 Norm | L2 Norm | |
|---|---|---|
| 벡터 간 거리 구하는 방법 | 절댓값 | 제곱값 |
| 특징 | outlier에 둔감함 | outlier에 민감함 |
linalg : linear algebra
u = np.array([1, 2, 3, 4, 5])
np.linalg.norm(u, 1)
# 15.0
np.linalg.norm(u)
np.linalg.norm(u, 2)
# 7.416198487095663
np.dot() 또는 @ 연산자x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
print('내적 :', x @ y)
print('내적 :', np.dot(x, y))
print('x 내적 y의 전치행렬 :', x.dot(y.T))
print('y 내적 x의 전치행렬 :', y.dot(x.T))
# 32
x = np.array([[1], [2], [3]])
y = np.array([[4], [5], [6]])
print('shape :', x.shape) # (3, 1)
print('shape :', y.shape) # (3, 1)
# print(x @ y) → 오류
print(x.T @ y)
# array([[32]])
np.linalg.inv()x = np.array([
[1, 2, 3],
[1, 0, 0],
[0, 0, 1]
])
y = np.linalg.inv(x)
print(x)
print('-' * 20)
print(y)
print('-' * 20)
print(x @ y)
[[1 2 3]
[1 0 0]
[0 0 1]]
--------------------
[[ 0. 1. 0. ]
[ 0.5 -0.5 -1.5]
[ 0. 0. 1. ]]
--------------------
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
rand()np.random.rand(1000)randint()np.random.randint(0, 10, 1000)randn()np.random.randn(1000)N(0, 1))3 * np.random.randn(1000) + 2N(2, 3²))standard_normal()randn과 똑같음np.random.standard_normal(1000)normal()np.random.normal(0, 1, 1000)N(0, 1))np.random.normal(1.5, 1.5, 1000)N(1.5, 1.5²))random_sample()np.random.random_sample(1000)(b - a) * random_sample(1000) + a2 * np.random.random_sample(1000) -1choice()np.random.choice(10, 1000)np.arange(10)에서 난수 1000개 생성np.random.choice([0, 1, 2, 3, 4], 1000)[0, 1, 2, 3, 4]에서 난수 1000개 생성