Matrix, 2차원 배열 (1)

Human Being·2022년 8월 10일
0

numpy

목록 보기
4/6
post-thumbnail
post-custom-banner

초기화

행렬 초기화 문법은 벡터와 유사

  • np.eye : identity matrix

랜덤 행렬 생성

  • (시작 범위, 끝 범위, (row, col))
  • (평균, 표준편차, (row, col))

새로운 버전의 랜덤 행렬 생성

접근

"view"의 의미는 복사하지 않고 그저 주소값만 가져왔다고 생각하면 된다

axis 매개변수

  • axis=0은 열별, axis=1은 행별
    - 위와 같은 경우 열별로 덧셈하면 결과는 행과 같은 shape을 가지게 된다
    - 그래서 axis=0을 단순히 세로 방향이라고 읽기보다는, 모든 행에 걸쳐 주어진 열의 합으로 읽어야 한다

Einstein summation으로 표기하면
sum(axis=0)은 np.einsum('ij->j', a)
sum(axis=1)은 np.einsum('ij->i', a)

연산

산술연산 (정규화)


출처:https://stackoverflow.com/questions/48135736/what-is-an-intuitive-explanation-of-np-unravel-index

비교연산

최대/최소

내적/외적

shape 변환

transpose

  • 1차원은 입력과 결과가 같음

.reshape(row, col)

새로운 축 추가

  • 1D array를 2D column vector로
  • -1 을 넣으면 자동으로 차원 크기를 알아내서 생성
  • reshape를 되돌리고 싶으면 np.squeeze

이외에도
np.newaxis를 이용할 수도 있다
이는 []안의 None이 적힌 것처럼 빈 축을 넣는 것

broadcasting 규칙 때문에 1차원 배열은 암묵적으로 2차원 row vector로 간주된다

.flatten() == .reshape(-1)

Join & Split

  • np.vstack((a,b)) : 세로(아래쪽)
  • np.hstack((a,c)) : 가로(오른쪽)

hstack은 1차원을 붙일 때 주의해야하는데
1차원 배열을 Row vector로 간주하기에 dimension-mismatch error 발생
이럴 때는 column_stack() 사용하자

반대로 (split)

복제

  • tile: 통째로 복사
  • repeat : 원소 하나를 지정된 축 방향으로 복제
post-custom-banner

0개의 댓글