Python/Python 기초문법
Python - Numpy 배열 생성
GinaKim
2024. 1. 4. 20:25
728x90
배열 생성 : np.array()
Numpy array는 한 가지 동일한 자료형이어야 함 (Python list는 여러가지 자료형을 한 번에 다룰 수 있다는 차이점!)
두 array의 모양이 같을 경우(원소 개수 동일), 두 array 간에 연산 사용이 가능
import numpy as np
num1 = [1, 2, 3, 4]
num2 = [3, 4, 5, 6]
arr1 = np.array(num1)
arr2 = np.array(num2)
arr1 + arr2
-----------------------------
# result
array([ 4, 6, 8, 10])
데이터 타입 확인 : dtype
data1 = [0, 1, 2, 3, 4, 5]
a1 = np.array(data1)
a1.dtype
-----------------------------
# result
dtype('int32')
np.array([0.5, 2, 0.01, 8]).dtype
----------------------------------
# result
dtype('float64')
범위를 지정해 배열 생성: np.arange(start, stop, step)
np.arange(0, 10, 2)
np.arange(10)
----------------------------
# result
array([0, 2, 4, 6, 8])
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
배열 변경: 배열.reshape(m, n)
arange로 생성되는 배열의 원소 개수와 reshape(m, n)의 m * n의 개수는 같아야 함
3차원 함수는 reshape(층, 행, 열)
np.arange(12).reshape(4, 3) # 4개의 행, 3개의 열
----------------------------
# result
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
np.arange(12).reshape(2, 2, 3)
-------------------------------
# result
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]])
배열 형태 확인 : shape
b1 = np.arange(12).reshape(2, 2, 3)
b1.shape
-------------------------------------
# result
(2, 2, 3)
b2 = np.arange(5)
b2.shape # (5,) => 1차원이라는 것
---------------------------------
# result
(5,)
np.linspace(start, stop, num)
start부터 stop까지 num개의 Numpy 배열 생성
* arange와 linspace의 차이점
- np.arange(start, stop, step) : 간격의 크기를 결정할 수 있음
- np.linspace (start, stop, num) : 간격 안에서 생성되는 수의 개수를 결정할 수 있음
np.linspace(0, 10, 5)
---------------------------------
# result
array([ 0. , 2.5, 5. , 7.5, 10. ])
np.zeros()
모든 원소가 0인 배열 생성
np.zeros(10) # 1차원 배열 생성
np.zeros((2, 2)) # 2차원 배열 생성
------------------------------------------------
# result
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
array([[0., 0.],
[0., 0.]])
np.ones()
모든 원소가 1인 배열 생성
np.ones(10)
np.ones((2, 2))
--------------------------------------------------
# result
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
array([[1., 1.],
[1., 1.]])
np.eye() : 단위행렬
n x n인 정사각형 행렬에서 주 대각선이 모두 1이고 나머지는 0인 행렬
arr_I = np.eye(3)
arr_I
-----------------
# result
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
astype() : 배열의 형 변환
정수 변환
f1 = np.array([10, 21, 0.549, 4.75, 5.98])
num_f1 = f1.astype(int)
num_f1
-------------------------------------------
# result
array([10, 21, 0, 4, 5])
실수변환
f1 = np.array([10, 21, 0.549, 4.75, 5.98])
num_f1 = f1.astype(float)
num_f1
---------------------------------------------
# result
array([10. , 21. , 0.549, 4.75 , 5.98 ])
np.random.rand()
실수 난수를 요소로 갖는 Numpy 배열 생성
np.random.rand(배열)
*random: 0~1 사이의 임의의 실수를 발생시키는 함수 (파이썬 내장 모듈)
np.random.rand(2, 3)
---------------------
# result
array([[0.24945416, 0.48973284, 0.80633022],
[0.09285956, 0.86042556, 0.84168378]])
np.random.randint()
np.random.randint(low, high, size) low 이상 high 미만 사이의 size 배열 생성 (size 생략시 1로 간주함)
np.random.randint(1, 100, 10)
------------------------------
# result
array([36, 14, 52, 5, 8, 98, 64, 28, 36, 50])
np.random.randint(0, 10, (2,5))
--------------------------------
# result
array([[6, 7, 9, 1, 3],
[9, 0, 6, 3, 1]])
728x90