Python 266

[Python] NumPy - 난수 발생과 카운팅 2

개요 2022.12.02 - [Python] NumPy - 난수 발생과 카운팅 1에 이어 마저 내용을 정리한다. 난수 생성 np.random 패키지는 rand 함수 이외에도 난수를 생성하는 함수를 제공하는데, 그중 많이 사용하는 것은 rand 함수를 포함하여 3가지이다. rand 0부터 1사이의 균일한 확률 분포로 실수 난수를 생성한다. 매개변수로 생성할 난수의 크기를 지정하는데, 여러 개의 인수를 넣으면 해당 크기를 가진 행렬을 생성한다. np.random.rand(10) np.random.rand(3, 5) # 실행 결과 array([0.95894927, 0.65279032, 0.63505887, 0.99529957, 0.58185033, 0.41436859, 0.4746975 , 0.6235101 ..

[Python] NumPy - 난수 발생과 카운팅 1

난수 발생 Pythom을 이용해 데이터를 무작위로 섞거나 난수를 발생시키는 방법을 정리한다. 시드 설정 컴퓨터 프로그램에서 일반적으로 말하는 난수란, 특정한 시작 숫자로부터 정해진 알고리즘에 의해 난수처럼 보이는 수열을 생성한 것이다. 이때 시작 숫자를 시드(seed)라고 한다. 시드는 보통 현재 시각 등을 이용해 자동으로 정하지만 수동으로 설정할 수도 있다. NumPy에서 시드를 설정하는 함수는 random.seed()로, 매개변수로 0과 같거나 큰 정수를 넣는다. np.random.seed(0) 시드를 설정한 후, random.rand 함수로 난수를 발생시킬 수 있다. 매개변수로 생성할 난수의 개수를 전달한다. np.random.rand(10) # 실행 결과 array([0.5488135 , 0.71..

[Python] NumPy - 기술 통계 2

개요2022.11.25 - [Python] NumPy - 기술 통계 1에 이어서 기술 통계 관련 함수를 마저 정리한다.   최댓값과 최솟값데이터 중에서 가장 큰 값과 작은 값인 최댓값과 최솟값은 max/min 함수로 찾는다.x = np.array([18, 5, 10, 23, 19, -8, 10, 0, 0, 5, 2, 15, 8, 2, 5, 4, 15, -1, 4, -7, -24, 7, 9, -6, 23, -13])x.max(), x.min()# 실행 결과(23, -24)   중앙값데이터를 크기 순으로 정렬했을 때 가운데에 있는 수를 중앙값이라고 한다. 만약 데이터의 수가 짝수이면 가운데에 있는 두 수의 평균을 의미한다.np..

[Python] NumPy - 기술 통계 1

기술 통계 NumPy는 데이터 집합에 대한 통계를 계산하는 함수를 제공하는데, 이를 기술 통계(descriptive statistics)라고 한다. 데이터의 개수(count) 평균(mean, average) 분산(variance) 표준 편차(standard deviation) 최댓값(maximum) 최솟값(minimum) 중앙값(median) 사분위수(quartile) 데이터의 수 데이터의 수는 데이터의 길이를 반환하는 len 함수로 구한다. x = np.array([18, 5, 10, 23, 19, -8, 10, 0, 0, 5, 2, 15, 8, 2, 5, 4, 15, -1, 4, -7, -24, 7, 9, -6, 23, -13]) len(x) # 실행 결과 26 표본 평균 일반적으로 의미하는 평균을 ..

[Python] NumPy - 배열의 연산 2

개요 2022.11.19 - [Python] NumPy - 배열의 연산 1에 이어 배열의 연산 관련된 부분을 마저 정리한다. 차원 축소 연산 행렬에서 하나의 행에 있는 원소를 하나의 데이터 집합으로 보고 최댓값 또는 최솟값, 평균값 등을 구하면 결괏값으로 각 행에 대한 하나의 숫자, 1차원 벡터가 구해진다. 이러한 연산을 차원 축소(dimension reduction) 연산이라고 한다. NumPy는 다음과 같은 차원 축소 연산 함수를 지원한다. min/max : 배열의 최소값/최대값 x = np.arange(5) x.min(), x.max() # 실행 결과 (0, 4) argmin, argmax : 배열의 최솟값/최댓값의 위치 x = np.array([4, 2, -1, 3]) x.argmin(), x.a..

[Python] NumPy - 배열의 연산 1

벡터화 연산 NumPy가 지원하는 벡터화 연산을 사용하면 반복문을 명시적으로 사용하지 않아도 배열의 모든 원소에 대한 반복 연산을 할 수 있다. 이로 인해 선형 대수 공식과 동일한 형태로 Python 코드를 작성할 수 있게 된다. 선형 대수에서 두 벡터의 합은 다음과 같이 구한다. $$ x = \begin{bmatrix}1 \\ 2 \\ 3 \\ \vdots \\ 10000 \end{bmatrix}, \;\;\;\; y = \begin{bmatrix}10001 \\ 10002 \\ 10003 \\ \vdots \\ 20000 \end{bmatrix}, $$ 일 때, 두 벡터의 합 $$ z = x + y $$ 은 다음과 같이 구한다. $$ \begin{bmatrix}1 \\ 2 \\ 3 \\ \vdots ..

[Python] Numpy - 배열의 생성과 변형 2

개요 2022.11.11 - [Python] NumPy - 배열 1 2022.11.12 - [Python] NumPy - 배열 2 (인덱싱과 슬라이싱) 2022.11.13 - [Python] NumPy - 배열의 생성과 변형 1 에 이어 NumPy에 대해서 계속 정리한다. 배열의 크기 변형 reshape reshape 함수로 배열 내 데이터는 유지하면서 형태를 변경할 수 있다. a = np.arange(10) a a.reshape(2, 5) # 실행 결과 array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]) 사용하는 원소의 개수가 정해져 있기 때문에 매개변수로 전달하는 튜플 중 하나가 -1이면, 자동으로 차원을 계산..

[Python] NumPy - 배열의 생성과 변형 1

개요 2022.11.11 - [Python] NumPy - 배열 1 2022.11.12 - [Python] NumPy - 배열 2 (인덱싱과 슬라이싱) 에 이어 NumPy에 대해서 계속 정리한다. 자료형 NumPy의 배열(ndarray 클래스 객체) 내 원소는 모두 같은 자료형이어야 한다. array 함수로 배열 생성 시 dtype 인수를 사용하여 자료형을 명시적으로 지정할 수 있다. 전달한 매개변수가 없으면 타입을 추론하게 된다. 자료형을 지정할 때는 아래와 같은 dtype 접두사 + 바이트/글자 수를 전달하여 지정한다. 숫자는 생략할 수 있고, 생략 시에는 OS에 따라 적절한 크기로 지정된다. dtype 접두사 설명 사용 예 b 불리언 b (참 혹은 거짓) i 정수 i8 (64비트) u 부호 없는 정..

[Python] NumPy - 배열 2 (인덱싱과 슬라이싱)

개요 2022.11.11 - [Python] NumPy - 배열 1에 이어 이번 글에서는 배열의 인덱싱과 슬라이싱에 대해 정리한다. 인덱싱 1차원 배열의 인덱싱은 리스트의 인덱싱과 동일하다. a = np.array(range(0, 9)) a[2] 실행 결과 2 다차원 배열인 경우에는 쉼표를 이용하여 접근할 수 있다. 쉼표로 구분된 차원은 축(axis)이라고 한다. b= np.array([[10, 20, 30, 40], [50, 60, 70, 80]]) b # 2행 3열 b[1, 2] 실행 결과 array([[10, 20, 30, 40], [50, 60, 70, 80]]) 70 슬라이싱 다차원 배열을 슬라이싱할 때는 쉼표와 일반적인 Python 슬라이싱을 함께 사용한다. b = np.array([[10, ..

[Python] NumPy - 배열 1

NumPy 수치해석, 선형 대수(linear algebra) 계산 기능을 제공하는 Python 패키지로, 자료형이 고정된 다차원 배열 클래스인 ndarray 클래스와 벡터화 연산(vectorized operation)을 지원한다. CPython에서만 동작한다는 특징을 가지며, 넘파이라고 읽는다. 직접 데이터 분석을 할 일은 없는데, 관련 소스를 볼 일이 생기는 것 같아 NumPy와 Pandas 개념을 정리해두려고 한다. 이 글은 기본적인 배열 생성에 대해서 정리한다. 배열 (array) 많은 숫자 데이터를 하나의 변수에 저장하여 관리할 때 속도가 느리고 메모리를 많이 차지하는 리스트보다 배열을 사용하는 것이 적은 메모리로 많은 데이터를 빠르게 처리할 수 있다. 배열을 리스트와 비슷하지만 다음과 같은 점에..