본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

PYTHON/NumPy

(4)
NumPy Broadcasting 브로드캐스팅 (feat.네트워크에서의 Broadcasting) 브로드캐스팅네트워크에서의 브로드캐스팅과 여기서의 브로드캐스팅이 다르다. 브로드캐스팅이 '하나를 여러 대상에게 퍼뜨린다'라는 느낌이 있다면네트워크의 브로드캐스팅은 한 장비가 같은 네트워크의 모든 장비에게 데이터를 전송한다는 의미이고NumPy에서는 브로드캐스팅은 배열 크기에 자동으로 맞춰주는 기능이라는 의미이다. 아래 예시를 보면 [1, 2, 3]과 +10 이 진행되었다. 그러나 사실상 [1, 2, 3] 과 [10, 10, 10]이 계산된것과같다.이처럼 자동 확장해서 계산되었다를 NumPy에서 브로드캐스팅이라고 부르는것.
numpy dot() @, (A*B) * (C*D) 가운데 있는 숫자 B와 C가 같으면 계산이 된다 : 왜 크기가 다른 행렬의 곱셈은 앞에 열의 수와 뒤의 행의 수가 같아야 계산이 가능할까? 왜 이렇게 계산할까?이는 행렬이 왜 존재하느냐와 연결된다.행렬은 '변환'을 표현하기 위해 만들어졌다.단순한 숫자놀이가 아닌 여러계산을 한번에 처리하기 위한 방식이다.백터가 숫자의 묶음이라면 행렬은 여러개의 계산식과 같다. [ [1 2 3] [4 5 6]][x, y, z]인 행렬은1x + 2y + 3z4x + 5y + 6z를 표현했다고 이해해보자. 행렬의 곱은 한줄의 계산식과 입력값 묶음을 계산하는 구조임을 이해한다면 행 [1, 2, 3]에[10, 20, 30]을 입력해 계산한다는 과정을 이해할 수 있다. https://standout.tistory.com/1727 np.dot()에서 왜 1차원배열이 세로벡터처럼 계산될까?여기서 x는 1차원배열이었는데 np.dor하는순간 왜 세로벡터처럼 계산될까? 행..
np.dot()에서 왜 1차원배열이 세로벡터처럼 계산될까? 여기서 x는 1차원배열이었는데 np.dor하는순간 왜 세로벡터처럼 계산될까? 행렬곱의 규칙 때문이다. 이를 수학에서는 엄격히 구분하지만 NumPy의 1차원 배열은 방향이 없는 벡터이고, dot 연산 시 자동으로 행렬곱 가능한 형태로 해석된다. 그래서 실무/AI에서는 애매함을 피하려고 reshape(-1, 1) 명시적으로 세로백터를 만든다.
파이썬의 다차원 배열 NumPy, NDArray NDArrayNumPy에서 말하는 NDArray는 보통 numpy.ndarray를 의미한다.이름 그대로 N-Dimensional Array 다차원 배열1차원은 리스트, 2차원은 표, 3차원 이상부터는 여러겹의 데이터. 이를 효율적으로 저장하는 자료구조이다. 아래의 c가 바로 ndarray 객체c = np.array([ [[1, 2], [3, 4]], [[5, 6], [7, 8]]]) ndarray는 Python리스트보다 훨씬 빠르고 메모리 효율이 좋고 수학연산이 쉬워 AI/데이터분석/이미지 처리에서 필수이다.파이썬은 배열을 다루는 능력이 없다.a = np.array([1, 2, 3])b = np.array([4, 5, 6])print(a + b) 핵심속성은 shape, ndim, d..