본문 바로가기

Numpy

(12)
Numpy - 3차원 배열 인덱싱 https://steadiness-193.tistory.com/50 Numpy - 3차원 axis 이해하기 3차원 텐서를 이용하기 위해 데이터를 불러온다. z는 (4행, 3열)의 2차원 데이터가 3개가 있다는 뜻이다. 위 텐서의 shape은 (3, 4, 3)으로서 (차원, 행, 열)로 보면 쉽다. axis는 따라서 0, 1, 2의 값을 가�� steadiness-193.tistory.com 위 포스팅에서 3차원 축에 대한 전반적인 이해를 했다. 이번엔 3차원 배열을 인덱싱 하는 것을 알아보자 배열 만들기 3행 3열의 배열, 2개가 겹쳐진 경우이다. (2, 3, 3) = (차원, 행, 열) 0번째 차원의 모든 행, 열 2, 3, 3 shape에서 차원을 선택했기에 3행 3열의 배열만 남았다. 0번째 차원의..
Numpy - apply_along_axis [apply_along_axis] 판다스의 apply처럼 이용하는 기능이지만 array일때 실행속도가 월등히 빠르다. import numpy as np np.apply_along_axis(함수, 축(axis), 배열(arr)) 예시1 - 작은 데이터프레임 10행 10열의 데이터프레임을 만들었다. 각 열별로 최댓값에서 최솟값을 빼는 연산을 lambda로 실행한다. 1-1. 판다스 - apply 실행 시간은 0.009초 상당히 빨리 진행됐다. * 실행 할때마다 시간은 달리 나온다. 1-2. Numpy - apply_along_axis apply_along_axis는 0.0초가 소요됐다. 결과는 result1과는 달리 배열 형태로 나왔다. (이를 데이터프레임의 컬럼으로 추가해주면 된다.) 이번엔 1만 개의 행..
Numpy - random : rand, randn 0부터 1사이의 균일분포로 랜덤한 ndarray 생성 - rand np.random.rand(N) 0이상, 1미만 N : 크기, 튜플로 입력하면 차원을 높일 수 있다. np.random.rand N : tuple로 입력하면 2차원으로 생성 가능 3행 5열의 배열 생성 https://steadiness-193.tistory.com/225 Numpy - random : normal, uniform, randint, choice 정규분포로부터 무작위 표본 추출 - normal np.random.normal(평균, 표준편차, 크기) * 평균은 0, 표준편차는 1이 기본값 np.random.normal 난수 50개 생성 균등분포로부터 무작위 표본추출 - uniform np.random.. steadiness-19..
Numpy - random : normal, uniform, randint, choice 정규분포로부터 무작위 표본 추출 - normal np.random.normal(평균, 표준편차, 크기) * 평균은 0, 표준편차는 1이 기본값 np.random.normal 난수 50개 생성 균등분포로부터 무작위 표본추출 - uniform (동일한 확률로 실수 추출) np.random.uniform(low, high, size) * high는 포함되지 않음 np.random.uniform 100개의 난수 생성 균일분포의 정수 무작위 표본추출 - randint (동일한 확률로 정수 추출) np.random.randint(low, high, size) * high는 포함하지 않음 np.random.randint 주어진 배열로부터 랜덤 샘플링 - choice np.random.choice(배열, size) *..
Numpy - np.log, np.log1p, np.exp 로그 기본 개념 밑 조건 : a > 0 진수 조건 : N > 0 x의 범위는 실수 위 내용 중에서 자연로그에 대해서 알아보자. 자연로그는 자연상수 e를 밑으로 하는 로그함수(natural logarithm)이며 주로 위 세가지 방법으로 표현하나, 박스 체크된 표현을 많이 사용한다. *자연상수 e : 2.71828182846... 의 값을 가지는 무리수 (오일러의 수) 자연로그10 자연상수(일부)에 2.032...제곱을 하면 10에 가까운 값이 나오는 것이다. log1 == ? 당연히 log1은 0이다. log0 == ? 원칙적으론 진수는 0보다 큰 수이다. 그렇기 때문에 진수자리에 0이 들어가면 경고 메시지가 뜨며 값은 -무한대가 나온다. 이러한 실수를 방지하기 위해 값에 1을 더해서 log를 취하는 방..
Numpy - 등간격으로 나누기 : np.linspace np.linspace(start, end, num(개수), endpoint=True, retstep=False ) start : 시작 end : 끝 (포함됨) num : 몇 구간으로 나눌 것인가 endpoint : end의 숫자를 포함할 것인지 (기본 True) retstep : 구간의 간격 표시 (기본 False) 필수 옵션 0부터 10까지 5구간으로 같은 간격으로 나누었다. endpoint=False 0부터 10까지 10을 포함하지 않고 5구간이기 때문에 0 / 2 / 4 / 6 / 8로 나뉘었다. retstep=True 0부터 10까지 5구간으로 등간격으로 나눴는데 그 간격이 2.5라는 것을 알려주었다.
Numpy - 배열 순서 섞기 : np.random.shuffle, np.random.permutation [np.random.shuffle] 기존의 배열을 변경 [np.random.permutation] 기존 배열은 냅두고, 순서를 랜덤하게 섞은 배열 객체를 새로 생성 배열 생성 shuffle 원본 배열의 순서가 바뀌었다. permutation 새 배열 x를 만들고 permutation을 실행하면 랜덤하게 순서를 바꾼 객체를 반환한다. 원본 배열은 그대로 이다.
Numpy - 정렬 : sort, np.sort, 축, 내림차순 배열 만들기 위와 같은 배열을 만들었다. 배열.sort() : 원본 배열의 값이 변경됨 np.sort(배열) : 정렬된 배열의 복사본 생성, 원본은 변경 없음 1. arr.sort() 오름차순으로 정렬되었으나, 원본 자체가 변경되었다. 2. np.sort(arr) np.sort를 이용해 정렬한 객체를 np_sorted로 받았다. 이는 정렬이 잘 되었는데, 원본은 어떨까? 26번 다음 27번으로 바로 다음에 실행한 결과 arr 원본은 순서가 그대로 유지되었다. 3. 축, axis 새로운 2차원 배열을 생성하자 여기서 첫번째 컬럼만 정렬하려면 슬라이싱과 인덱싱으로 첫번째 컬럼을 지정해서 정렬해주면 된다. 열 방향으로 각 행을 오름차순 정렬하려면 axis=1을 넘겨주면 된다. 4. 내림차순 파이썬의 문법의 :..