오늘은 넘파이의 배열 생성에 대해 간단하게 알아보는 시간을 가져보자.
1.0 넘파이의 배열이란?
넘파이의 배열은 ndarray(다차원 배열)라고 불리며 파이썬의 리스트와는 다른 특징을 가지고 있다. ndarray는 동일한 데이터 타입을 가지는 다차원 배열로 구성되며 벡터와 행렬과 같은 수학적 구조를 표현하기에 이상적이다.
1.1 넘파이 배열 생성하기
넘파이 배열은 np.array() 함수를 사용하여 생성할 수 있다, 여기서 중요한 점은 배열의 요소는 동일한 데이터 타입을 가져야 한다는 것이다.
import numpy as np
# 1차원 배열 생성
array1 = np.array([1,2,3,4,5])
# 2차원 배열 생성
array2 = np.array([[1,2,3],[4,5,6]])
# 배열의 데이터 타입 지정
array3 = np.array([1,2,3], dtype = np.float64)
위의 코드를 보며 넘파이 배열의 속성에 대해서 한 번 살펴보자.
• shape
배열의 차원과 각 차원의 크기를 튜플로 반환한다.
• dtype
배열의 데이터 타입을 반환한다.
• ndim
배열의 차원 수를 반환한다.
• size
배열의 총 요소 수를 반환한다.
print(array1.shape) # 출력 : (5,)
print(array2.shape) # 출력 : (2,3)
print(array3.dtype) # 출력 : float64
print(array2.ndim) # 출력 : 2
print(array1.size) # 출력 : 5
1.2 배열 연산하기
넘파이 배열은 요소별 연산, 행렬 곱셈, 브로드캐스팅 등과 같은 수학 연산을 지원한다.
# 요소별 덧셈
result1 = array1 + 2
print(result1) # 출력 : [3 4 5 6 7]
# 요소별 곱셈
result2 = array1 * 3
print(result2) # 출력 : [3 6 9 12 15]
# 배열 간 덧셈
result3 = array1 + array1
print(result3) # 출력 : [2 4 6 8 10]
# 행렬 곱셈
result4 = np.dot(array1, array1) # 원소 갯수가 같아야 함
print(result4) # 출력 : 55
• array1 + 2
array1의 요소는 1,2,3,4,5가 있고 각 요소에 2씩 더하게 된다, array1 = (1+2, 2+2, 3+2, 4+2, 5+2)
• array1 * 3
마찬가지로 array1의 각 요소에 3을 곱하게 된다, array1 = (1*3, 2*3, 3*3, 4*3, 5*3)
• array1 + array1
두 개의 배열의 같은 인덱스의 요소끼리 더한다.
array1 = (1,2,3,4,5)
+ + + + +
array1 = (1,2,3,4,5)
result3 = (1+1, 2+2, 3+3, 4+4, 5+5)
• np.dot(array1, array1)
두 개의 배열의 같은 인덱스의 요소끼리 곱하고 모든 요소의 덧셈을 반환한다.
array1 = (1,2,3,4,5)
* * * * *
array1 = (1,2,3,4,5)
result4 = (1 + 4 + 9 + 16 + 25)
1.3 인덱싱과 슬라이싱
넘파이 배열에서도 파이썬의 리스트와 같이 인덱싱과 슬라이싱을 사용할 수 있다.
# 인덱싱
print(array1[0]) # 출력 : 1
print(array[0,1]) # 출력 : 2
# 슬라이싱
print(array1[1:4]) # 출력 : [2 3 4]
print(array2[:,1:]) # 출력 : [[2,3] [5 6]]
넘파이 배열은 다차원 데이터를 다루는데 매우 유용하며 수학 연산과 데이터 분석에 필수적인 도구이다.