NumPy Tutorial-NumPy 배열 생성

Jinku Hu 2023년1월30일
  1. 제로 배열
  2. 하나의 배열
  3. 대각선 배열
  4. 삼각 배열
NumPy Tutorial-NumPy 배열 생성

제로 배열

np.zeros

np.zeros 는 모든 요소가 0 인 배열을 만드는 데 사용됩니다. 문법은

np.zeros(shape, dtype=float, order="C")

어디,

shape 는 행렬의 크기이며 1 차원, 2 차원 또는 여러 차원 일 수 있습니다.

dtype 은 기본적으로 float64 이지만 NumPy 의 모든 데이터 유형으로 할당 될 수 있습니다.

제로 배열을 만들어 봅시다

>>> import numpy as np
>>> np.zeros(5)		# it creates a 1D array with 5 zeros
array([0., 0., 0., 0., 0.])
>>> np.zeros(5, dtype='int8')	# it creates a 1D array with 5 zeros with the data type of int8
array([0, 0, 0, 0, 0], dtype=int8)
>>> np.zeros((4, 3)) # it creates a 4x3 zeros array
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])

np.empty

경우에 따라 지정된 모양으로 만 배열을 초기화하고 내부의 초기화 데이터에 신경 쓰지 않습니다. np.empty 를 사용하여 더 빠른 초기화를 달성 할 수 있지만 생성 된 배열의 값이 0임을 보장하지는 않습니다.

%timeit 를 사용하여 np.empty()np.zeros()의 실행 시간을 비교할 수 있습니다.

In[1]: % timeit np.empty((100, 100))
715 ns ± 11.6 ns per loop(mean ± std. dev. of 7 runs, 1000000 loops each)
In[2]: % timeit np.zeros((100, 100))
4.03 µs ± 104 ns per loop(mean ± std. dev. of 7 runs, 100000 loops each)

분명히, np.empty()는 초기화에서 np.zeros()보다 훨씬 빠릅니다. np.zeros()(100, 100)모양의 배열을 초기화하는 데 필요한 시간은 17.5 %입니다.

np.zeros_like

우리는 이미 배열을 가지고 있고 같은 모양을 가진 제로 배열을 만들고 싶다고 가정 해보십시오. 전통적인 방법으로이 새로운 어레이를 만들 수 있습니다.

test = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
np.zeros(test.shape)

또는 전용 메소드 인 np.zeros_like()를 사용하여 새로운 배열을보다 효율적으로 만들 수 있습니다.

x = np.zeros_like(test)
주의
np.zeros_like()에 의해 생성 된 배열은 주어진 배열과 같은 모양 일뿐만 아니라 그것과 동일한 데이터 유형을가집니다.

하나의 배열

np.ones

0과 유사하게, 우리는 1로 채워진 배열을 만들 수도 있습니다. np.ones()의 구문과 매개 변수는 np.zeros()와 동일합니다.

>>> import numpy as np
>>> np.ones(5)		# it creates a 1-D array with 5 ones
array([1., 1., 1., 1., 1.])
>>> np.ones(5, dtype='int8')	# it creates a 1-D array with 5 ones, and its data type is int8
array([1, 1, 1, 1, 1], dtype=int8)
>>> np.ones((4, 3)) # it creates an array of (4, 3) shape
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])

np.ones_like

np.zeros_like 와 유사하게, np.ones_like 는 주어진 배열과 같은 모양을 가진 새로운 배열을 만드는 데 사용될 수 있습니다.

>>> test = np.array([[1.0,2.0,3.0],[4.0,5.0,6.0],[7.0,8.0,9.0]])
>>> np.ones_like(test)
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])

대각선 배열

대각선 배열은 대각선에 1이 있고 다른 곳에 0이있는 2 차원 배열입니다. 구문이 다음과 같은 np.eye()메소드로 만들 수 있습니다.

np.eye(N, M=None, k=0, dtype= < class 'float' >, order='C')

어디,

매개 변수 데이터 유형 요약
N INT 생성 된 행렬의 행 수를 지정합니다.
M INT (선택 사항) 기본값은 ‘없음’입니다. 생성 할 행렬의 열 수를 지정합니다. ‘없음’인 경우 N과 같습니다.
k INT (선택 사항) 기본값은 0입니다. 0은 기본 대각선 위치입니다. k 가 양수이면 k 의 변위로 상단 대각선을 만듭니다. k 가 음수이면-k 의 변위로 더 낮은 대각선을 만듭니다.
dtype 데이터 유형 (선택 사항) 기본값은 float 입니다. 작성된 배열 요소의 데이터 유형을 지정합니다.

np.eye()

>>> import numpy as np
>>> np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
>>> np.eye(4, 3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.],
       [0., 0., 0.]])
>>> np.eye(3, 4)
array([[1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.]])
>>> np.eye(4, k=1)
array([[0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 0., 1.],
       [0., 0., 0., 0.]])

np.identity()

’np.identity’는 주 대각선에 배열을 갖는 정사각형 대각선 배열을 만들기 때문에 특수한 ’np.eye’로 취급 될 수 있습니다.

numpy.identity (n, dtype = float)
매개 변수 데이터 유형 기술
n INT 생성 할 행렬의 크기를 지정합니다. N × N 정사각형 배열을 만듭니다.
dtype 데이터 유형 (선택 사항) 기본값은 float 입니다. 요소의 데이터 유형을 지정합니다.

np.identity()예제

>>> import numpy as np
>>> np.identity(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

삼각 배열

np.tri()를 사용하여 삼각 배열을 만들 수 있습니다. 문법은

numpy.tri(N, M=None, k=0, dtype= < class 'float' >)

입력 매개 변수는 ’np.eye()‘와 유사합니다.

np.tri()예제

>>> import numpy as np
>>> np.tri(3)
array([[1., 0., 0.],
       [1., 1., 0.],
       [1., 1., 1.]])
>>> np.tri(4, k=1)
array([[1., 1., 0., 0.],
       [1., 1., 1., 0.],
       [1., 1., 1., 1.],
       [1., 1., 1., 1.]])
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook