Numpy Tutorial with w3schools.
w3schools는 여러가지 언어의 코드 실습 예시를 보여주는 사이트다. NumPy는 파이썬에서 수치 및 과학 컴퓨팅을 위한 필수 라이브러리인데 이 라이브러리는 대규모의 다차원 배열과 행렬을 쉽게 다룰 수 있게 해주어, 데이터 과학과 머신러닝 분야에서 매우 유용하게 사용된다. w3schools는 코딩을 배우고자 하는 사람들에게 친숙한 인터랙티브한 튜토리얼과 예제를 제공하는 교육 웹사이트다. w3schools의 튜토리얼을 통해 NumPy를 사용하는 방법을 하나하나 배우려한다.
Numpy Getting Started
넘파이 라이브러리 불러오기
import numpy
파이썬 텍스트 에디터에 작성하면 ‘numpy’ 라이브러리를 불러온다.
Example)
import numpy
arr = numpy.array([1, 2, 3, 4, 5])
print(arr)
위 코드를 실행하면 arr 변수에 배열 형식으로 넣은 ‘[1 2 3 4 5]’ 이 출력된다.
import numpy as np
라이브러리들은 종종 줄여서 사용하기도 하는데 numpy는 np로 줄여서 사용한다. ‘as’ 뒤에 있는 단어로 코드 내에서 사용한다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
이런 식으로 사용되는데 기존 코드에서 배열을 생성할 때 사용했던 ‘numpy’ 대신 ‘np’로 줄여 사용되었다.
위 결과도 당연히 같은 값이 출력된다.
import numpy as np
print(np.__version__)
위 코드를 입력하면 넘파이의 버전이 출력된다.
Numpy Creating Arrays
배열 생성 목차이다.
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr))
위 코드를 실행시키면 ‘print(arr)’에서 arr이 출력되고, print(type(arr))을 실행시키면 ‘<class ‘numpy.ndarray’>’ 가 출력되며 arr의 타입이 ‘확인’되는 것을 볼 수 있다. 이처럼 type() 함수는 특정 변수나 객체가 어떤 데이터 유형인지 쉽게 확인할 수 있다.
numpy는 배열로 사용할 때도 쓰이는데, 이때 numpy 내에 있는 array() 함수로 배열을 생성하면 이 타입을 ndarray라고 한다.
넘파이의 array 함수를 이용하면 리스트, 튜플 또는 배열과 유사한 객체를 메서드에 전달하면 된다. 그러면 해당 객체가 ndarray로 변환된다.
Dimensions in Arrays
배열에는 1차원 배열, 2차원 배열, 3차원 배열 등 여러가지 배열이 있다.
0-D Arrays
## 0차원
import numpy as np
arr = np.array(42)
print(arr)
0차원 배열은 array 안에 아무것도 감싸지 않는다.
1-D Arrays
## 1차원
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
1차원 배열은 array 안에 ()든 []를 감싸 만들어준다.
2-D Arrays
## 2차원
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
2차원 배열은 array() 안에 []로 배열을 각각 감싸고 ,로 구분짓는다. 위 코드를 실행하면 결과는
[[1 2 3]
[4 5 6]]
위와 같이 두 개의 배열로 나온다.
3-D arrays
## 3차원
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
print(arr)
##결과
[[[1 2 3]
[4 5 6]]
[[1 2 3]
[4 5 6]]]
3차원 배열은 1차원 배열을 감싼 2차원 배열이 여러개 있는 형태이다.
배열의 차원을 확인하는 방법도 있다.
import numpy as np
a = np.array(42)
b = np.array([1, 2, 3, 4, 5])
c = np.array([[1, 2, 3], [4, 5, 6]])
d = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
print(a.ndim)
print(b.ndim)
print(c.ndim)
print(d.ndim)
##결과
0
1
2
3
ndim를 사용하면 결과와 같이 몇 차원인지 확인할 수 있다.
Higher Dimensional Arrays
ndmin 이라는 인수를 통해 배열의 차원을 미리 정할 수도 있다.
import numpy as np
arr = np.array([1, 2, 3, 4], ndmin=5)
print(arr)
print('number of dimensions :', arr.ndim)
위 코드를 실행하면 아래처럼 차원 수 만큼 감싸져 있는 것을 볼 수 있다.
[[[[[1 2 3 4]]]]]
number of dimensions : 5
NumPy Array Indexing
Access Array Elements
배열 인덱싱은 배열의 요소에 접근하는 것이다. 배열이 나열되어 있을 때 인덱스 번호로 배열 내부 요소를 호출 할 수 있다. 배열의 인덱스는 0부터 시작된다.
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[0])
위 코드에서 배열의 값과 인덱스는 아래 표처럼 짝지어 진다.
| Index | Value |
| 0 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
따라서 arr[0] 은 1을 가리킨다.
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[2] + arr[3])
위 코드에서 arr[2] 는 3을 arr[3]은 4를 가리킨다. 따라서 나온 값은 7이 출력된다.
Access 2-D Arrays
2차원 배열에 대한 접근 목차이다.
import numpy as np
arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])
print('2nd element on 1st row: ', arr[0, 1])
#결과
2
arr[] 안에 겉에서부터 배열을 지정한다. 앞에 있는 0이 ‘[1,2,3,4,5]’를 가리키고 있고, 1이 [1,2,3,4,5] 배열에서 1번째 인덱스에 있는 ‘2’를 가리킨다. 따라서 결과는 2가 출력된다.
한가지 예시를 더 보겠다.
import numpy as np
arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])
print('5th element on 2nd row: ', arr[1, 4])
위 코드의 결과는 2차원 배열에서 1번째 인덱스에 있는 ‘[6,7,8,9,10]’ 에 4번째 인덱스인 ’10’이 출력된다.
Access 3-D Arrays
3차원 배열도 별 다를바가 없다.
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr[0, 1, 2])
위 코드에서는 6이 출력될 것이다. 3차원 배열에서 0번째 배열인 ‘[[1, 2, 3], [4, 5, 6]]’ 를 가리키고 있고, 2차원 배열에서 1번째 인덱스 배열인 ‘[4, 5, 6]’를 가리킨다. 이 배열에서 2번째 인덱스는 6을 가리킨다.
Negative Indexing
arr[]의 인수에 ‘-‘부호도 넣어 사용할 수 있다.
import numpy as np
arr = np.array([[1,2,3,4,5], [6,7,8,9,10]])
print('Last element from 2nd dim: ', arr[1, -1])
앞서 배운 것을 활용하여 풀어보면 arr의 첫번째 인수는 1이다. 이는 [6,7,8,9,10] 을 의미한다. 여기서 -1은 어떤 값을 가리킬까. 0번째 인덱스가 6인 것을 생각해보면 한칸 뒤로 가면 된다. 그러면 10이라는 값이 나온다. 코드를 실행해보면 예상대로 10이 출력된다.
참고 – w3schools
최신글
![[프로그래머스] 잘라서 배열로 저장하기 - 자바](https://develog.co.kr/wp-content/uploads/2025/01/프로그래머스-잘라서-배열로-저장하기-자바-150x150.png)
![[프로그래머스] 붕대 감기 - 자바](https://develog.co.kr/wp-content/uploads/2024/11/프로그래머스-붕대-감기-자바-150x150.png)
![[프로그래머스] 달리기 경주 - 자바](https://develog.co.kr/wp-content/uploads/2024/11/프로그래머스-달리기-경주-자바-150x150.png)