np.add()
: 덧셈np.subtract()
: 뺄셈np.multiply()
: 곱셈np.divide()
: 나눗셈np.sum()
또는 ndarray.sum()
sum
arr = 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) # 21
axis = 0
: 행 압축 → 열 안의 원소끼리 더함np.sum(arr, axis=0) # [5 7 9]
axis = 1
: 열 압축 → 행 안의 원소끼리 더함np.sum(arr, axis=1) # [ 6 15]
sum
arr = 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) # 231
axis = 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) # 1
axis = 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) # 9
axis = 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) + 2
N(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) + a
2 * np.random.random_sample(1000) -1
choice()
np.random.choice(10, 1000)
np.arange(10)
에서 난수 1000개 생성np.random.choice([0, 1, 2, 3, 4], 1000)
[0, 1, 2, 3, 4]
에서 난수 1000개 생성