배열 생성하기¶
시퀀스 데이터로부터 배열 생성¶
- arr_obj = np.array(seq_data)
- 시퀀스 데이터(리스트, 튜플 등)를 배열로 변경
- 배열의 속성
- dtype : 배열 요소의 데이터 타입
- shape : 배열의 모양(차원)을 튜플로 표현
In [1]:
import numpy as np
In [2]:
data1 = [0, 1, 2, 3, 4, 5]
a1 = np.array(data1)
a1
Out[2]:
In [3]:
data2 = [0.1, 5, 4, 12, 0.5]
a2 = np.array(data2)
a2
Out[3]:
In [4]:
a1.dtype
Out[4]:
In [5]:
a2.dtype
Out[5]:
In [6]:
np.array([0.5, 2, 0.01, 8])
Out[6]:
In [7]:
np.array([[1,2,3], [4,5,6], [7,8,9]])
Out[7]:
범위를 지정해 배열 생성¶
- arr_obj = np.arange([start, ] stop[, step])
- start부터 stop 전까지 step만큼 더해 배열을 생성
- start 디폴트는 0
- step 디폴트는 1
- reshape(m, n)
- 배열의 차원 조정
- m x n 행태로 변경
- 데이터의 개수가 맞아야 함
- arr_obj = np.linspace(start, stop[, num])
- start부터 stop까지(포함) num개의 NumPy 배열 생성
- num 디폴트 값은 1
- 등간격
In [8]:
np.arange(0, 10, 2)
Out[8]:
In [9]:
np.arange(1, 10)
Out[9]:
In [10]:
np.arange(5)
Out[10]:
In [11]:
a1 = np.arange(1, 10)
a1.shape
Out[11]:
In [12]:
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
a2.shape
Out[12]:
In [13]:
np.arange(12).reshape(4,3)
Out[13]:
In [14]:
b1 = np.arange(12).reshape(4,3)
b1.shape
Out[14]:
In [15]:
b2 = np.arange(5)
b2.shape
Out[15]:
In [16]:
np.linspace(1, 10, 10)
Out[16]:
In [17]:
np.linspace(0, np.pi, 20 )
Out[17]:
특별한 형태의 배열 생성¶
- arr_zero_n = np.zeros(n)
- arr_zero_mxn = np.zeros((m,n))
- 원소가 0인 배열 생성
- arr_one_n = np.ones(n)
- arr_one_mxn = np.ones((m,n))
- 원소가 1인 배열 생성
- arr_I = np.eye(n)
- n x n 단위 행렬 생성
In [18]:
np.zeros(10)
Out[18]:
In [19]:
np.zeros((3,4))
Out[19]:
In [20]:
np.ones(5)
Out[20]:
In [21]:
np.ones((3,5))
Out[21]:
In [22]:
print(np.zeros((3,4,3)))
In [23]:
np.eye(3)
Out[23]:
배열의 데이터 타입 변환¶
배열의 데이터 타입 기호
- b : 불
- i : 부호가 있는 정수
- u : 부호가 없는 정수
- f : 실수
- c : 복소수
- M : 날짜
- O : 파이썬 객체
- S 혹은 a : 바이트 배열
- U : 유니코드
데이터 타입의 숫자
- 비트 수 혹은 바이트 수
예
- 'U8' : 8비트 유니코드
- 'i32' : 32비트 부호 있는 정수
arr_obj = np.astype(타입)
- 배열을 지정한 타입으로 변환
In [24]:
np.array(['1.5', '0.62', '2', '3.14', '3.141592'])
Out[24]:
In [25]:
str_a1 = np.array(['1.567', '0.123', '5.123', '9', '8'])
num_a1 = str_a1.astype(float)
num_a1
Out[25]:
In [26]:
str_a1.dtype
Out[26]:
In [27]:
num_a1.dtype
Out[27]:
In [28]:
str_a2 = np.array(['1', '3', '5', '7', '9'])
num_a2 = str_a2.astype(int)
num_a2
Out[28]:
In [29]:
str_a2.dtype
Out[29]:
In [30]:
num_a2.dtype
Out[30]:
In [31]:
num_f1 = np.array([10, 21, 0.549, 4.75, 5.98])
num_i1 = num_f1.astype(int)
num_i1
Out[31]:
In [32]:
num_f1.dtype
Out[32]:
In [33]:
num_i1.dtype
Out[33]:
난수 배열의 생성¶
- np.random.seed(시드값)
- 난수 생성 시드값 설정
- rand_num = np.random.rand()
- [0. 1) 사이의 실수 난수 생성
- rand_num = np.random.rand([d0, d1, …, dn])
- 지정한 차원의 배열 생성
- [0. 1) 사이의 실수 난수로 채움
- rand_num = np.random.randn([d0, d1, …, dn])
- 지정한 차원의 배열 생성
- 가우시안 표준 정규 분포를 따르는 실수 난수 채움
- rand_num = np.random.randint([low,] high, [,size])
- [low, high)사이의 정수 난수를 갖는 배열 생성
- size는 배열의 크기
- 튜플로 지정 (d0, d1, … , dn)
- low의 디폴트 값은 0
In [34]:
np.random.rand(2,3)
Out[34]:
In [35]:
np.random.rand()
Out[35]:
In [36]:
np.random.rand(2,3,4)
Out[36]:
In [37]:
np.random.randint(10, size=(3, 4))
Out[37]:
In [38]:
np.random.randint(1, 30)
Out[38]:
배열의 연산¶
기본 연산¶
In [39]:
arr1 = np.array([10, 20, 30, 40])
arr2 = np.array([1, 2, 3, 4])
In [40]:
arr1 + arr2
Out[40]:
In [41]:
arr1 - arr2
Out[41]:
In [42]:
arr2 * 2
Out[42]:
In [43]:
arr2 ** 2
Out[43]:
In [44]:
arr1 * arr2
Out[44]:
In [45]:
arr1 / arr2
Out[45]:
In [46]:
arr1 / (arr2 ** 2)
Out[46]:
In [47]:
arr1 > 20
Out[47]:
배열의 인덱싱과 슬라이싱¶
배열의 인덱싱¶
- 배열명[위치]
- 배열명[[위치1, 위치2, …, 위치n]]
- 해당 차원의 여러 원소 선택
- 배열명[행_위치, 열_위치]
- 배열명[ [행_위치1, 행_위치2, … , 행_위치n],
[열_위치1, 열_위치2, … , 열_위치n]]
- 2차원 배열의 여러 원소를 선택
- 배열명[조건식]
- 해당 조건식을 만족하는 원소만 선택된 배열
In [48]:
a1 = np.array([0, 10, 20, 30, 40, 50])
a1
Out[48]:
In [49]:
a1[0]
Out[49]:
In [50]:
a1[4]
Out[50]:
In [51]:
a1[5] = 70
a1
Out[51]:
In [52]:
a1[[1,3,4]]
Out[52]:
In [53]:
a2 = np.arange(10, 100, 10).reshape(3,3)
a2
Out[53]:
In [54]:
a2[0, 2]
Out[54]:
In [55]:
a2[2, 2] = 95
a2
Out[55]:
In [56]:
a2[1]
Out[56]:
In [57]:
a2[1] = np.array([45, 55, 65])
a2
Out[57]:
In [58]:
a2[1] = [47, 57, 67]
a2
Out[58]:
In [59]:
a2[[0, 2], [0, 1]]
Out[59]:
In [60]:
a = np.array([1, 2, 3, 4, 5, 6])
a[a > 3]
Out[60]:
In [61]:
a[(a % 2) == 0]
Out[61]:
배열의 슬라이싱¶
배열[시작_위치:끝_위치]
- 시작_위치 ~ 끝_위치-1 범위의 슬라이싱
- 시작_위치 생략시 0
- 끝_위치 생략시 배열의 끝
배열[행시작_위치:행끝_위치, 열시작_위치:열끝_위치]
- 2차원의 슬라이싱
In [62]:
b1 = np.array([0, 10, 20, 30, 40, 50])
b1[1:4]
Out[62]:
In [63]:
b1[:3]
Out[63]:
In [64]:
b1[2:]
Out[64]:
In [65]:
b1[2:5] = np.array([25, 35, 45])
b1
Out[65]:
In [66]:
b1[3:6] = 60
b1
Out[66]:
In [67]:
b2 = np.arange(10, 100, 10).reshape(3,3)
b2
Out[67]:
In [68]:
b2[1:3, 1:3]
Out[68]:
In [69]:
b2[:3, 1:]
Out[69]:
In [70]:
b2[1][0:2]
Out[70]:
In [71]:
b2[0:2, 1:3] = np.array([[25, 35], [55, 65]])
b2
Out[71]:
In [ ]:
'인터페이스 개발 > Python' 카테고리의 다른 글
Python - 파일[데이터베이스] - MySQL/MariaDB, 테이블 생성, 데이터 삽입, 테이블 조회, 수정 및 삭제 (0) | 2020.07.29 |
---|---|
Python - [추가] - 데이터 시각화 Matplot (0) | 2020.07.28 |
Python - 고급 문법[데코레이터] - 일급 시민, 지역 함수, 함수 데코레이터, 클래스 데코레이터 (0) | 2020.07.28 |
Python - 고급 문법[반복자] - 열거 가능 객체, 제너레이터 (0) | 2020.07.28 |
Python - 가상환경[가상환경] - 모듈, 목록, 만들기, 활성화, 비활성화, 삭제 (0) | 2020.07.28 |
댓글