import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
flat = a.ravel()
print(flat)
flat[2] = 100
print(flat)
print(a)
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(a)
flat = a. flatten()
print(flat)
flat[4] = 0
print(flat)
print(a)
a = np.array([[1, 2, 3], [4, 5, 6]])
print("원본: ", a.shape)
# axis = 0
a0 = np.expand_dims(a, axis = 0)
print("a0", a0.shape)
print("a0", a0)
# axis = 1
a1 = np.expand_dims(a, axis = 1)
print("a2", a1.shape)
print("a1", a1)
# axis = 2
a2 = np.expand_dims(a, axis = 2)
print("a2", a2.shape)
print("a2", a2)
a = np.array([[[[1], [2], [3]]], [[[1], [2], [3]]]])
print(a.shape) # (2, 1, 3, 1)
s = np.squeeze(a)
print(s)
print(s.shape)
# axis 지정하는 경우
a2 = np.zeros((1, 4, 1, 2))
print(a2.shape)
s1 = np.squeeze(a2, axis = 0)
print(s1.shape)
s2 = np.squeeze(a2, axis = 2)
print(s2.shape)
# 차원의 크기가 1이 아닌 차원은 제거할 수 없다
# s3 = np.squeeze(a2, axis = 1)
# print(s3.shape)
a = np.array([1, 1, 1, 5, 5, 2, 2, 2, 2, 4, 4, 4, 3, 3, 3])
u1 = np.unique(a) # 고유값의 오름차순 배열 반환
print(u1)
u2, idx, inv, cnt = np.unique(a, return_index = True, return_inverse = True, return_counts = True)
print("인덱스: ", idx)
print("원본의 고유값 인덱스:", inv)
print("값의 등장 횟수: ", cnt)
arr = np.array([[10, 20], [30, 40], [50, 60]])
flat1 = arr.ravel()
print(flat1)
flat1[0] = 999
print(flat1)
flat2 = arr. flatten()
print(flat2)
flat2[0] = 999
print(flat2)
결과

img = np.random.rand(32, 32)
new_img = np.expand_dims(img, axis = 0)
print("img", new_img.shape)
결과

img = np.random.randint(0, 255, (1, 28, 28, 1))
new_img = np.squeeze(img)
print(new_img.shape)
결과

arr = np.array([[3, 1, 2, 2],
[1, 2, 3, 1],
[2, 2, 1, 4]])
flat = arr.flatten()
print(flat)
uni1 = np.unique(flat)
print(uni1)
uni2 = uni1.reshape(1, len(uni1))
# -1을 입력할 시 자동으로 계산함
print(uni2)
결과

arr = np.array([[[1], [3], [2], [1], [3], [2], [3], [1], [2], [3]]]) # shape (1, 10, 1)
arrrrr = np.squeeze(arr)
print(arrrrr)
eigen = np.unique(arrrrr)
print(eigen)
결과

arr = np.array([ [[0, 1, 2, 3], [1, 2, 3, 4], [2, 3, 4, 5]],
[[3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]] ]) # shape (2, 3, 4)
flat = arr.flatten()
print(flat)
eigenn = np.unique(flat)
print(eigenn)
eigennn = eigenn.reshape(len(eigenn), 1)
print(eigennn)
결과

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
result1 = np.concatenate((a, b), axis = 0) # 행 기준 결합
print(result1)
print(result1.shape)
# 결합이 불가 -> 결합하는 axis를 제외한 나머지 차원이 같아야 함
# result2 = np.concatenate((a, b), axis = 1)
c= np.array([[7], [8], [9]])
result3 = np.concatenate((result1, c), axis = 1) # 열 기준 결합
print(result3)
print(result3.shape)
# np.stack()
# 새로운 차원을 추가하면서 결합
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# axis = 0
s1 = np.stack((a, b), axis = 0)
print(s1)
print(s1.shape)
# axis = 1
s2 = np.stack((a, b), axis = 1)
print(s2)
print(s2.shape)
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
h = np.hstack((a, b))
print(h)
v =np.vstack((a, b))
print(v)
a = np.arange(9)
s = np.split(a, 3)
print(a)
print(s)
print(s[0])
print(s[1])
print(s[2])
# 같은 크기의 행, 열 단위로만 나눌 수 있음
# s2 = np.split(a, 4)
a = np.arange(16).reshape(4, 4)
print(a)
s1 = np.split(a, [1, 3])
print(s1)
for part in s1:
print(part)
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
v =np.vstack((a, b))
print(v)
결과

a = np.arange(12)
s = np.split(a, 3)
print(s)
결과

a = np.array([1, 2])
b = np.array([3, 4])
c = np.array([5, 6])
s = np.stack((a, b, c), axis = 0)
print(s)
print(s.shape)
결과

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8, 9], [10, 11, 12]])
c = np.stack((a, b), axis = 0)
print(c)
print(c.shape)
결과

arr = np.arange(8)
sizes = [2, 3, 3]
indices = []
num = 0
for size in sizes[:-1]:
num += size
indices.append(num)
split = np.split(arr, indices)
print(split)
결과

a = np.ones((2, 3))
b = np.zeros((2, 3))
c = np.stack((a, b), axis = 0)
print(c.shape)
d = np.stack((a, b), axis = 1)
print(d.shape)
결과

a = np.array([3, 1, 4, 2])
# 정렬한 배열을 반환
s = np.sort(a)
print(s)
print(a)
# 원본을 정렬
a.sort()
print(a)
# 내림차순 정렬: sort한 후 배열을 뒤집어야 함
print(a[::-1])
# 2차원 배열 정렬
a = [[6, 5, 4], [3, 1, 2]]
s1 = np.sort(a, axis = 0)
print(s1)
s2 = np.sort(a, axis = 1)
print(s2)
a = np.array([3, 5, 1, 2, 4])
idx = np.argsort(a)
print(idx)
print(a[idx])
결과
arr = np.array([7, 2, 9, 4, 5])
a = np.sort(arr)
print(a)
b = a[::-1]
print(b)
결과

arr = np.array([[9, 2, 5],
[3, 8, 1]])
s = np.sort(arr, axis = 0)
print(s)
결과

arr = np.array([10, 3, 7, 1, 9])
idx = np.argsort(arr)
print(idx)
print(arr[idx])
결과

arr = np.array([[4, 7, 2],
[9, 1, 5],
[6, 8, 3]])
s = np.sort(arr, axis = 0)
print(s)
결과
