728x90
반응형

목차 ▽열기

Numpy란 무엇인가?
- Numpy는 다차원 배열을 처리할 수 있는 선형대수학(Linear Algebra) 라이브러리입니다.
- 데이터 분석 및 과학 연산에서 매우 중요한 역할을 합니다.
- Numpy를 설치하려면:를 실행하세요.
conda install numpy

저의 경우 기존 jupyter notebook 설치시 pandas와 같이 설치완료 하였습니다. 😁
1. Numpy 배열의 구조 이해하기
- Numpy 배열은 1D, 2D, 3D와 같은 다양한 차원을 지원합니다.
- 아래 이미지는 1D 배열, 2D 배열, 3D 배열의 구조와 shape를 보여줍니다.

2. Python에서 Numpy 배열 생성
- Numpy 배열을 생성하는 가장 기본적인 방법:
- 리스트와 배열의 차이를 이해하세요. Numpy 배열은 다양한 연산과 벡터화를 지원합니다.

3. 배열 속성 확인하기
- len(), size, shape, dtype를 사용하여 배열의 속성을 확인할 수 있습니다.
len(x) # 길이
x.size # 전체 요소 개수
x.shape # 배열 구조
x.dtype # 데이터 타입

4. 배열 저장 및 로드
- 배열 데이터를 저장하고 다시 불러올 수 있습니다:
np.save("my_array", x)
y = np.load("my_array.npy")



위와 같이 저장 확인이 가능합니다. CRUD가 가능합니다. 😎
5. Numpy 내장 함수 활용
- 배열을 생성하는 다양한 방법:
- 0으로 채워진 배열: np.zeros((6, ))
- 1로 채워진 배열: np.ones((4, 7))
- 특정 값으로 채우기: np.full((3, 5), 8)

6. 정수 배열 생성
6-1. 정수 배열을 생성하기
np.arange(10) # 0~9
np.arange(5, 21, 2) # 5~20까지 2 간격으로

6-2. 특정 범위의 정수 배열을 생성하기
# 기존 range의 경우 값을 재확인해야하는 어려움이 있음
range(1, 10+1, 2) # 0~9 까지중 홀수
range
# np.arange의 경우 바로 확인이 가능함
np.arange(1, 10+1, 2)

6-3. 정수 말고 실수를 얻고자 할때
np.linspace(0, 1, num=5)

7. 배열의 Reshape
Reshape는 NumPy 배열의 차원과 형태를 변경하는 강력한 기능입니다. 이 함수를 사용하면 배열의 데이터를 유지하면서 원하는 차원과 모양으로 재구성할 수 있습니다.

Reshape 함수는 다음과 같이 사용할 수 있습니다
- np.reshape(변경할_배열, 새로운_차원)
- 배열.reshape(새로운_차원)
x = np.arange(20)
x.reshape(4, 5) # 4x5 배열로 변환
출력
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])

8. 랜덤 값으로 채워진 배열 생성
- random.random(): 0과 1 사이의 임의의 실수를 반환.
- np.random.random(): Numpy 버전의 랜덤 함수로 배열 생성 가능.
- 배열 생성 예시:결과: 0과 1 사이의 10개의 랜덤 값 배열.
np.random.random(10)
출력
array([0.37304885, 0.68649758, 0.12757049, 0.26184397, 0.17595956,
0.44184265, 0.63074801, 0.43534603, 0.82459772, 0.08948643])

참조
random.random()의 ()안에 숫자를 입력하면 오류가 발생하지만
np.random.random() 순자를 유무의 상관이 없습니다. 😊
9. 시작값과 끝값을 지정한 랜덤 정수 생성
- np.random.seed(): 랜덤 값 고정.
- np.random.randint(start, stop, shape): 정수 배열 생성.
- 예:
- 1부터 100 사이의 숫자로 채운 4x5 배열 생성.
np.random.randint(1, 100, (4, 5))
출력
array([[74, 80, 57, 5, 49],
[36, 61, 99, 75, 73],
[64, 45, 62, 49, 85],
[60, 21, 77, 57, 42]])
random 이 random 아니다?!
np.random.seed()
()의 동일한 숫자를 입력하면 같은 렌덤 숫자라 추출됩니다.
np.random.seed(21)
np.random.randint(1, 100, (4,5) )
결과
array([[74, 80, 57, 5, 49],
[36, 61, 99, 75, 73],
[64, 45, 62, 49, 85],
[60, 21, 77, 57, 42]])

10. 배열의 최대값, 최소값 및 통계 정보
- X.max(), X.min(): 배열의 최대값 및 최소값 반환.
- X.sum(), X.mean(), X.std(): 합, 평균, 표준 편차 계산.
X.max()
X.sum()
X.min()
X.std() # 전체 합계 평균
출력
: 99
: 979
: 6
: 31.3902453...

축(axis)을 지정하여 연산 가능 : 결과 : 행별 최대값, 열별 최소값.

11. 조건을 활용한 필터링
- 조건을 사용하여 배열 내 데이터를 필터링:결과: 배열에서 70보다 큰 값들만 반환.
X[X > 70]
출력
array([[ 6, 19, 71, 51, 57],
[99, 49, 54, 6, 81],
[36, 92, 34, 13, 83],
[16, 7, 85, 91, 29]])
- 조건 결과의 합계:
(X > 70).sum()
출력
array([71, 99, 81, 92, 83, 85, 91])

12. 최대값과 최소값의 위치
- X.argmax(), X.argmin(): 배열에서 최대/최소값의 인덱스 반환.
- 인덱스를 사용한 데이터 접근:
- X[1, 2] # 1행 2열 데이터

13. Slicing
13-1. 배열 자르기 : Slicing
- 배열에서 원하는 부분을 선택:
- python 복사편집 X[start:end]
- 2차원 배열에서는 행과 열을 지정하여 자르기:결과: 1
2행, 23열의 데이터 반환.
코드:
X = array([10, 81, 1, 6, 70, 58, 5])
X[ 0 : 3 ]
X[ : 3 ] # 위와 같은 것입니다.
x[ 2 : 3 ]
출력
: [10, 81, 1]
: [10, 81, 1]
: [1, 6, 70, 58, 5]

13-2. 다차원 배열에서 Slicing
다차원 배열에서 Slicing은 각 축(axis)에 대해 적용됩니다.
코드:
import numpy as np
X = np.array([
[2, 4, 6, 8],
[10, 12, 14, 16],
[18, 20, 22, 24],
[26, 28, 30, 32]
])
- 행과 열 동시 Slicing
코드:
X[ 0:2, 0:2 ]
출력
[[ 2, 4],
[10, 12]]
- 특정 영역 Slicing
코드:
[ [ 20, 22 ], [ 28, 30 ] ]
출력
X[ 2: , 1 : 3 ]

14. Arithmetic Operations and Broadcasting
- 1차원 배열:
- score_list = [77, 46, 24, 99, 87] new_list = [x - 7 for x in score_list]
- 2차원 배열:
- score = np.arange(2, 33, 2).reshape(4, 4) score ** 2


실습
1. 배열 생성과 연산
- 4x4 ndarray를 생성하고 2~32까지 짝수로 채우기:결과:
[[ 2, 4, 6, 8],
[10, 12, 14, 16],
[18, 20, 22, 24],
[26, 28, 30, 32]]
X = np.arange(2, 33, 2).reshape(4, 4)

728x90
반응형
'Python > 이론' 카테고리의 다른 글
108. [Python] [Pandas] 프로그래밍 기본 사항 : Series (0) | 2025.01.22 |
---|---|
107. [Python] [Pandas] 프로그래밍 기본 사항 : Series Attributes (0) | 2025.01.21 |
104. [Python] 프로그래밍 기본 사항 : Random & Datetime (1) | 2025.01.21 |
103. [Python] 프로그래밍 기본 사항 : Built-in Functions (1) | 2025.01.21 |
101. [Python] 프로그래밍 기본 사항 : FUNCTIONS (함수) (0) | 2025.01.21 |