초기화되지 않은 데이터로 채워진 배열 생성
empty
- 주어진 배열과 같은 모양/타입의 새로운 배열을 리턴
- 초기화되지 않은 데이터로 채워짐
- shape 파라미터에 새로운 배열의 모양 선언
- 초기화에 시간을 소비하지 않고 빠르게 배열 생성
numpy.empty(shape, dtype=float, order='C', *, like=None)
# 형태가 (2, 3)이고 초기화되지 않은 데이터로 채워진 배열 생성
arr = np.empty((2, 3))
print(arr)
# [[0.0e+000 4.9e-324 9.9e-324]
# [1.5e-323 2.0e-323 2.5e-323]]
empty_like
- 주어진 배열과 같은 모양/타입의 새로운 배열을 리턴
- 초기화되지 않은 데이터로 채워짐
- 배열의 모든 원소를 초기화할 필요가 있는 경우 zeros_like() 또는 ones_like() 사용 권장
numpy.empty_like(prototype, dtype=None, order='K', subok=True, shape=None)
# 주어진 배열 생성
arr = np.array([[1, 2, 3], [4, 5, 6]])
# 주어진 배열과 동일한 형태와 데이터 타입을 가진 새로운 배열 생성
result = np.empty_like(arr)
print("Original array:")
print(arr)
# Original array:
# [[1 2 3]
# [4 5 6]]
print("\nNew empty_like array:")
print(result)
# New empty_like array:
# [[62544128 0 0]
# [ 0 0 0]]
empty()와 empty_like()
- 공통점: 초기화되지 않은 데이터로 채워진 배열을 생성하는 데 사용
- 차이점:
empty()는 배열의 형태와 데이터 타입을 직접 지정
empty_like()는 기존 배열을 기반으로 동일한 형태와 데이터 타입을 가진 새로운 배열을 생성, 형태와 데이터 타입을 별도로 지정할 필요가 없음
1로 가득한 배열 생성
ones
- 주어진 배열과 같은 모양/타입의 1로 가득한 새로운 배열을 리턴
- shape 파라미터에 새로운 배열의 모양 선언
numpy.ones(shape, dtype=None, order='C', *, like=None)
one = np.ones(5) #array([1., 1., 1., 1., 1.])
one.shape #(5,)
one.ndim #1
one = np.ones((5,), dtype=int) # array([1, 1, 1, 1, 1])
one.shape #(5,)
one.ndim #1
one = np.ones((2, 1))
# array([[1.],
# [1.]])
one.shape #(2, 1)
one.ndim #2
ones_like
- 주어진 배열과 같은 모양/타입의 1로 가득한 새로운 배열을 리턴
numpy.ones_like(a, dtype=None, order='K', subok=True, shape=None)
x = np.arange(6)
x = x.reshape((2, 3))
x
# array([[0, 1, 2],
# [3, 4, 5]])
np.ones_like(x)
# array([[1, 1, 1],
# [1, 1, 1]])
y = np.arange(3, dtype=float)
y # array([0., 1., 2.])
np.ones_like(y) #array([1., 1., 1.])
ones(), ones_like()
- 공통점: 1로 채워진 배열을 생성하는 데 사용
- 차이점:
ones()는 배열의 형태와 데이터 타입을 직접 지정
ones_like()는 기존 배열을 기반으로 동일한 형태와 데이터 타입을 가진 새로운 배열을 생성, 형태와 데이터 타입을 별도로 지정할 필요가 없음
0으로 가득한 배열 생성
zeros
- 주어진 배열과 같은 모양/타입의 0으로 가득한 새로운 배열을 리턴
- shape 파라미터에 새로운 배열의 모양 선언
numpy.zeros(shape, dtype=float, order='C', *, like=None)
np.zeros(5) #array([ 0., 0., 0., 0., 0.])
np.zeros((5,), dtype=int) #array([0, 0, 0, 0, 0])
np.zeros((2, 1))
# array([[ 0.],
# [ 0.]])
zeros_like
- 주어진 배열과 같은 모양/타입의 0으로 가득한 새로운 배열을 리턴
numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)
x = np.arange(6)
x = x.reshape((2, 3))
x
# array([[0, 1, 2],
# [3, 4, 5]])
np.zeros_like(x)
# array([[0, 0, 0],
# [0, 0, 0]])
y = np.arange(3, dtype=float)
y # array([0., 1., 2.])
np.zeros_like(y) # array([0., 0., 0.])
zeros(), zeros_like()
- 공통점: 0으로 채워진 배열을 생성하는 데 사용
- 차이점:
zeros()는 배열의 형태와 데이터 타입을 직접 지정
zeros_like()는 기존 배열을 기반으로 동일한 형태와 데이터 타입을 가진 새로운 배열을 생성, 형태와 데이터 타입을 별도로 지정할 필요가 없음
특정한 값으로 초기화된 배열 생성
full
- 주어진 배열과 같은 모양/타입의 특정한 값으로 초기화된 새로운 배열을 리턴
- shape 파라미터에 새로운 배열의 모양 선언
numpy.full(shape, fill_value, dtype=None, order='C', *, like=None)
np.full((2, 2), 10)
# array([[10, 10],
# [10, 10]])
np.full((2, 2), [1, 2])
# array([[1, 2],
# [1, 2]])
full_like
- 주어진 배열과 같은 모양/타입의 특정한 값으로 초기화된 새로운 배열을 리턴
numpy.full_like(a, fill_value, dtype=None, order='K', subok=True, shape=None)
x = np.arange(6, dtype=int)
np.full_like(x, 1) #array([1, 1, 1, 1, 1, 1])
np.full_like(x, 0.1) #array([0, 0, 0, 0, 0, 0])
np.full_like(x, 0.1, dtype=np.double) #array([0.1, 0.1, 0.1, 0.1, 0.1, 0.1])
full(), full_like()
- 공통점: 특정 값으로 채워진 배열을 생성하는 데 사용
- 차이점:
full()는 배열의 형태와 데이터 타입을 직접 지정
full_like()는 기존 배열을 기반으로 동일한 형태와 데이터 타입을 가진 새로운 배열을 생성, 형태와 데이터 타입을 별도로 지정할 필요가 없음
대각행렬 생성
eye
- N : row의 수
- M : column 수(따로 설정하지 않으면 NxN의 정사각행렬)
- k : 대각행렬이 값을 가지기 시작하는 위치(기본값은 0이며, 이 경우 주 대각선에 1이 위치)
eye(N, M=None, k=0, dtype=<class 'float'>, order='C', *, like=None)
np.eye(3, k=1)
# array([[0., 1., 0.],
# [0., 0., 1.],
# [0., 0., 0.]])
np.eye(4, 5, k=1)
# array([[0., 1., 0., 0., 0.],
# [0., 0., 1., 0., 0.],
# [0., 0., 0., 1., 0.],
# [0., 0., 0., 0., 1.]])
identity
- 항상 정사각행렬만 생성
- 파라미터 n을 받아 n * n의 단위행렬 생성
- 항상 주 대각선에 1이 위치
- 기본값은 float
numpy.identity(n, dtype=None, *, like=None)
np.identity(3)
# array([[1., 0., 0.],
# [0., 1., 0.],
# [0., 0., 1.]])
eye()와 identity
- 공통점: 모두 대각선 상의 원소가 1인 행렬을 생성
- 차이점:
eye()가 더 유연한 함수로 다양한 크기와 형태의 행렬을 생성
identity()는 오직 정사각 행렬에 대해서만 단위 행렬을 생성