티스토리 뷰

개발자 로그/Python

넘파이 기초

현 알트만 2024. 9. 12. 20:31

Keyword: 넘파이 불러오기, 배열만들기, reshape(), 조회 및 슬라이싱, 조건 조회, 연산

 

1. 넘파이 불러오기 

 

 

 

"import numpy as np", 기억하자. 이는 numpy 라이브러리를 불러와서 np라는 별칭으로 사용한다는 뜻이다. 물론, np라는 별칭 외에 다른 것으로 사용해도 되지만, 일종의 굳어진 사회적 함의이므로 최대한 위와 같은 별칭을 사용하도록 하자.

 

 

2. 배열 만들기

# 1차원 리스트
a1 = [1, 2, 3, 4, 5]

# 배열로 변환
b1 = np.array(a1)

# 확인
print(b1)

 

 

넘파이로 배열을 만들 때는 리스트를 np.array()안에 넣어주면 된다. 위와 같이 리스트를 받는 변수를 이용해도 되지만 직접 리스트 형태로 넣어도 같은 결과가 나온다. 배열을 확인해본 결과 알맞게 나온 것을 확인할 수 있다. 리스트와 다른 것은 ','가 없다는 것이다. 

 

 

3. reshape()

# (2, 3) 형태의 2차원 배열 만들기
a = np.array([[1, 2, 3],
              [4, 5, 6]])

# 확인
print(a)
# (3, 2) 형태의 2차원 배열로 Reshape
b = a.reshape(3, 2)

# 확인
print(b)

 

 

위와 같은 배열에서 배열의 reshape()하는 방법을 알아보자.  이는 배열 a를 받아서 "reshape(행, 열)"의 형태로 입혁하면 된다. 

 

[[1 2]
 [3 4]
 [5 6]]

 

결과는 위와 같이 행 3개, 열 2개의 배열로 변환되었다. 

 

 

*주의 사항

배열은 배열의 짝이 맞지 않는 배열의 형태로 변환되지 않는다. 예를 들면 (3,2)의 shape를 가진 배열을 (4,1)의 배열로 반환할 수 없다. 즉 열과 행을 곱한 총 요소의 개수를 고려되어진 배열의 형태로만 바꿀 수 있다.

 

4. 조회 및 슬라이싱

# (3, 3) 형태의 2차원 배열 만들기
a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

# 확인
print(a)

 

위와 같은 배열이 있을 때에 조회와 슬라이싱을 어떻게 할 수 있는 지에 대해서 살펴보자.

[] 1개는 요소를 [] 2개, [[]]는 행과 열을 조회라고 생각하면 된다. 물론 차원이 높아짐에 따라, []의 개수가 더 늘어날 수 있다. 

 

 

a[0,1] -> a의 첫번째 행과 두번째 열의 값: 2

 

a[[0, 1]] 은 a[[0,1], ]과 같다. 즉 열의 값은 입력되지 않았다. 즉, 첫번째와 두번째의 행의 값을 모두 출력하라는 출력문이다. 결과는 [[1 2 3] [4 5 6]]이다. 

 

 

슬라이싱은 배열 변수 앞에 [a:b]의 형태로 입력된다. 물론 조금 복잡한 슬라이싱도 있지만, 하나만 알아보도록 하자. 

a[0:2]는 0부터 1번까지의 인덱스의, 즉, 첫번째와 두번재 행을 출력하도록 한다. 

 

5. 조건 조회

# 2차원 배열 만들기
score= np.array([[78, 91, 84, 89, 93, 65],
                 [82, 87, 96, 79, 91, 73]])

# 확인
print(score)

 

[[78 91 84 89 93 65]
 [82 87 96 79 91 73]]

 

위와 같은 배열이 score라는 변수에 저장되어 있다. 이를 조건으로 조회를 할 수 있는데, 그 방법을 알아보도록 하자. 

 

# 요소 중에서 90 이상인 것만 조회
score[score >= 90]

 

배열 변수 앞에 []을 하고 안에 조건을 입력하면 된다. 위 같은 경우 [] 안에 score >= 90을 입력한 것을 볼 수 있다. 이로써 score 변수 안에서 90 이상인 요소가 조회가 된다. 

 

90 이상의 값만 출력이 된 것을 확인할 수 있다.

 

# 모든 요소 중에서 90 이상 95 미만인 것만 조회
score[(score >= 90) & (score < 95)]

 

조건을 2개 이상 넣을 수도 있는데, 이는 "배열변수[(조건1) & (조건2)]"의 형식으로 입력하면 된다. 위와 같은 케이스는 점수는 90이상 95미만인 값을 조회한였다.  

 

6. 연산  

 

 

 

 

마지막으로 배열 연산에 대해서 알아보도록 하자. 배열 또한 더하기, 빼기, 곱하기, 나누기 등 기본적인 다양한 연산이 가능하다. 그러나, 이는 행렬의 계산과 마찬가지로 더하기와 빼기는 두 배열의 shape가 일치해야 한다. 곱하기와 나누기는 두 배열이 있다고 하면 한 배열의 끝 열의 개수와 한 배열의 끝 행의 개수가 일치해야 한다. 

 

위 예시는 두 개의 (2, 2) shape의 배열 연산이다. 결과는 사진을 참고하면 좋겠다. 

'개발자 로그 > Python' 카테고리의 다른 글

[실습] 엑셀 파일 다루기  (0) 2024.09.11
[실습] 워드 클라우드  (0) 2024.09.11
정규표현식  (0) 2024.09.10
함수  (0) 2024.09.10
제어문(조건문, 반복문)  (0) 2024.09.09