
axis = 0
열을 기준으로 동일한 열에 있는 요소를 하나의 그룹으로 묶어 집계 함수의 연산 범위로 지정

axis = 1
행을 기준으로 동일한 행에 있는 요소를 하나의 그룹으로 묶어 집계 함수의 연산 범위로 지정

집계 함수 : 배열객체에 대한 메소드로 사용하거나 Numpy 라이브러리의 메소드로 사용하는 두 가지 방법
- 합계 : sum()
- 최소값 : min()
- 최대값 : max()
- 누적 합계 : cumsum()
- 평균 : mean()
- 중앙값 : median()
- 크기 순으로 나열된 데이터에 대해 중앙에 위치하는 값
- 상관계수 : corrcoef()
- 데이터 간의 상관관계를 나타내는 수치(-1 <= r <= 1)
- 표준편차 : std()
- 분산의 제곱근, 데이터가 평균으로부터 흩어져 있는 정도
- 분산 = 편차(요소-전체평균)제곱의 평균
- 고유값 : unique()
# 사용할 배열 객체 확인
np_print(a)

# 합계 - 전체 기준 => 모든 요소에 대한 합
# 1) 배열 타입의 메서드 : arr.sum()
# 2) numpy 함수 : np.sum(arr)
a.sum()

# 합계 - row, 가로축별 합산
# 메서드, np함수의 파라미터값 : axis=1
# 결과값 : [0번 row의 합, 1번 row의 합, 2번 row의 합...]
print(c.sum(axis=1))
print(c)

# 합계 - column 세로축별 합산 결과
# 메서드, np함수의 파라미터값 : axis=0
# 결과값 : [0번째 column합, 1번째 column합, 2번째 column합...]
print(c.sum(axis=0))
print(c)

# 최소값 - 전체 기준
# 1) 배열 타입의 메서드 : arr.min()
# 2) numpy 함수 : np.min(arr)
c.min()
np.min(c)

# (참고) 파이썬 리스트에서 최소값 찾기
x = [1, 2, 3, 4]
min(x)

# 최소값 - 각 가로축(row)별 최소값 찾기
# 결과값 : [0번째row 최소값, 1번째row최소값...]
print(c.min(axis=1))
print(c)
print(np.min(c, axis=1))

# 최소값 - 각 세로축(column)별 최소값 찾기
# 결과값 : [0번째column 최소값, 1번째column최소값...]
print(c.min(axis=0))
print(np.min(c, axis=0))

# 최대값 - 전체기준
# 1) 배열 타입의 메서드 : arr.max()
# 2) numpy함수 : np.max(arr)
c.max()
np.max(c)

# 최대값 - 가로축 기준(row)
c.max(axis=1)

# 최대값 - 세로축 기준(column)
c.max(axis=0)

c

# 누적합계 - 전체 기준
# 1) 배열 타입의 메서드 : c.cumsum()
# 2) numpy 함수 : up.cumsum()
# 결과값 :
c.sum() # 총합

c.cumsum() # 누적합

# 누적합계 - 가로축(row)기준
c.cumsum(axis=1)

# 누적합계 - 세로축(column)기준
c.cumsum(axis=0)

# 평균 - 전체 기준
# 1) 배열 타입의 메서드 : arr.mean()
# 2) numpy 함수 : np.mean(arr)
print(c.mean())
print(np.mean(c))

# 평균 - 가로축 기준
print(c.mean(axis=1))
print(np.mean(c, axis=1))

# 평균 - 세로축 기준
print(c.mean(axis=0))
print(np.mean(c, axis=0))

c

# 중앙값 - 전체 기준
# numpy 함수 : np.median()
# arr.median()을 쓸 수 없음
# c.median()불가능
np.median(c)
> 요소의 개수가 짝수이면 중앙에 있는 두 값을 더해 2로 나눈 값을 구해준다.

# 중앙값 - 가로축 기준
np.median(c, axis=1)

# 상관계수 : 두 데이터간의 상관관계(양/음의 상관관계)
# numpy 함수 : np.corrcoef(arr1, arr2)
x = np.array([15, 12, 27, 37, 29])
y = np.array([1, 4, 2, 9, 7])
# 서로 다른 배열 2개를 활용한 상관계수 matrix
# 결과 : 대칭형 매트릭스(대각선을 경계로 상위, 하위 삼각형 중 하나만 해석해도 된다)
# 오른쪽 아래를 향하는 대각선은 자기 자신과의 상관관계(항상 1)
print(x)
print(y)
print(np.corrcoef(x, y))

# numpy에서는 3개요소를 이용한 상관도를 구하는 것이 불가능
# 팬더스를 이용하는 경우는 2개씩 짝지은 모든 경우의 수를 구해준다.
z = np.array([0.3, 0.5, 0.6, 0.8, 1.3])
np.corrcoef(x, y, z)

# 표준편차 - 전체 기준
# 1) 배열 타입의 메서드 : arr.std()
# 2) numpy 함수 : np.std(arr)
a

# 전체
np.std(a)

# 세로축
np.std(a, axis=0)

# 가로축
np.std(a, axis=1)


# 사용할 배열 객체 확인
np_print(a)
np_print(b)

# 구조가 다른 배열간의 연산
# a배열의 모든 요소에 각각 10씩 더하기
a + 10

# 스칼라 -> 배열 변형
# 3행 3열의 구조에 모든 요소가 10인 배열 생성
scalar_arr = np.full_like(a, 10)
np_print(scalar_arr)

a + scalar_arr

# 1행 4열의 구조에서 1, 2, 3, 4를 값으로 가지는 배열 x 생성
# 4행 1열의 구조에서 1, 2, 3, 4를 값으로 가지는 배열 y 생성
x = np.arange(1, 5).reshape(1, 4)
y = np.arange(1, 5).reshape(4, 1)
np_print(x)
np_print(y)

# 배열 X를 동일한 값으로 4행으로 확장한 새로운 배열 생성
# 행 방향으로 배열 추가(세로길이 증가) 메서드 : np.append(arr1, arr2, axis=0)
new_x = np.append(x, x, axis=0)
new_x

new_x = np.append(new_x, new_x, axis=0)
new_x

# 배열 y도 위의 수순대로 4열까지 확장한 새로운 배열로 저장해주세요.
# 열 방향으로 (column개수 증가) 배열 추가 메서드 np.append(), 방향 = 1
new_y = np.append(y,y,axis=1)
np_print(new_y)

new_y = np.append(new_y,new_y,axis=1)
np_print(new_y)

new_x + new_y

x + y
