[Python] 넘파이(numpy)_3. 배열 생성 (empty, zeros, ones, eye), 배열 변형(reshape, flatten), 값 분할 배열 생성(linspace, longspace)
#정리
#09empty_zero - 임의의 넘파이 배열 생성
#empty() : 임의의 실수데이터로 넘파이 배열 반환
- print(np.empty(5))
- print(np.empty((2,5))) #행렬 사이즈를 tuple type으로 넣어줘야 한다.
- print(np.empty((2,5),dtype=int)) #임의 데이터의 타입을 지정할 수 있다.
- print(np.empty((2,5,3),int)) #임의 데이터의 타입을 지정할 수 있다.
#zeros() : 값이 0인 넘파이 배열 생성
- print(np.zeros(5))
- print(np.zeros((2,5)))
- print(np.zeros((2,5),dtype=int))
- print(np.zeros((2,5,3),dtype=int))
#ones() : 값이 1인 넘파이 배열 생성
- print(np.ones(5))
- print(np.ones((2,5)))
- print(np.ones((2,5),dtype=int))
- print(np.ones((2,5,3),dtype=int) *10) #broadcast 특성을 이용해 기본 값을 변경 할 수 있다.
#특정 행렬과 같은 형태의 임의의 행렬을 만들 수 있다.
- print(np.empty(ndarray.shape)) #shape() 활용하여 생성- print(np.empty_like(ndarray))
- print(np.zeros_like(ndarray))
- print(np.ones_like(ndarray))
#10full_identity_eye - 임의의 값 행렬 생성, 단위 행렬 생성
#임의의 넘파이 행렬 생성
<np.full(데이터 갯수, 채울 값)>
- print(np.full(2,33)) #1차원 행렬 생성
<np.full(tuple(행,열), 채울 값)>
- print(np.full((2,3),33)) #2,3 행렬에 모든 값을 33으로 지정
<np.identity(행렬 크기) : 단위 행렬 생성>
#행,열의 수를 동일하게 만들어 주며, 대각선으로 1 생성.
- print(np.identity(2)) #2,2 단위 행렬 생성
- print(np.identity(3,dtype=int)) #정수 타입 단위행렬 생성
<np.eye(행렬 크기) : 정사각,직사각 행렬 생성>
#행,열의 수를 동일하게 만들어 준다.
- print(np.eye(2))
- print(np.eye(3,dtype=int))
#np.eye(행,열,1의 시작 위치,타입) : 정사각,직사각 행렬 생성
- print(np.eye(2,5,1,dtype=int)) #2,5 행렬 / 인덱스 1부터 1 삽입 / int 타입
#11arange_flatten - 배열 형태 변경, 배열을 평평하게(1차원) 변형#arange() : 특정 규칙을 가진 행렬 생성 방법
- print(np.arange(10)) #[0,1,2,,,9]
- print(np.arange(start=0,stop=10,step=1)) #0~9
#reshape(row,col) : 일련의 값을 희망하는 형태로 변경.- 전치와는 달리 희망하는 형태에 맞춰 순서대로 값이 들어간다.
- ndarray = ndarray.reshape(2,5)
- ndarray = ndarray.reshape(2,3,4)#본래 형태 (1차원 배열)로 되돌리는 법
<np.reshape(ndarray,ndarray.size)>
- ndarray = np.reshape(ndarray,ndarray.size) #배열의 전체갯수를 활용하여 1차 배열로 변경
<np.flatten()>
- print(ndarray.flatten()) #평평하게 (1차원 배열)로 만들어준다.
<ravel()>
- print(ndarray.ravel())
- print(np.ravel(ndarray))
#12linspace - 분할 값으로 배열 생성
#np.linspace(시작값,끝값,분할 갯수) : 1차원 배열
- print(np.linspace(0,9,5))
- print(np.linspace(0,1,20))
#np.linspace((시작값s),(끝값s),분할 갯수) : 2차원 배열
- print(np.linspace((2,3,4),(7,8,9),5)) #(2~7),(3~8),(3~9) / 5분할
- print(np.linspace((2,3,4),(7,8,9),10))
#np.logspace((시작값s),(끝값s),분할 갯수) : 2차원 배열
- linspace와 비슷하지만 조금더 정교함
- print(np.linspace(0,1,20))
- print(np.linspace((2,3,4),(7,8,9),10))
#09empty_zero - 임의의 넘파이 배열 생성
#empty() : 임의의 실수데이터로 넘파이 배열 반환
- print(np.empty(5))
- print(np.empty((2,5))) #행렬 사이즈를 tuple type으로 넣어줘야 한다.
- print(np.empty((2,5),dtype=int)) #임의 데이터의 타입을 지정할 수 있다.
- print(np.empty((2,5,3),int)) #임의 데이터의 타입을 지정할 수 있다.
#zeros() : 값이 0인 넘파이 배열 생성
- print(np.zeros(5))
- print(np.zeros((2,5)))
- print(np.zeros((2,5),dtype=int))
- print(np.zeros((2,5,3),dtype=int))
#ones() : 값이 1인 넘파이 배열 생성
- print(np.ones(5))
- print(np.ones((2,5)))
- print(np.ones((2,5),dtype=int))
- print(np.ones((2,5,3),dtype=int) *10) #broadcast 특성을 이용해 기본 값을 변경 할 수 있다.
#특정 행렬과 같은 형태의 임의의 행렬을 만들 수 있다.
- print(np.empty(ndarray.shape)) #shape() 활용하여 생성
- print(np.empty_like(ndarray))
- print(np.zeros_like(ndarray))
- print(np.ones_like(ndarray))
--예문 코드 보기--
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
print("numpy version",np.__version__) #numpy version check
print("--np.empty(5) : 1차원 배열----")
#empty() : 임의의 실수데이터로 넘파이 배열 반환
print(np.empty(5))
print("--np.empty(tuple) : 2차원 배열----")
print(np.empty((2,5))) #행렬 사이즈를 tuple type으로 넣어줘야 한다.
print("--np.empty(tuple,type) : 2차원 배열 & 타입지정----")
print(np.empty((2,5),dtype=int)) #임의 데이터의 타입을 지정할 수 있다.
print("--np.empty(tuple,type) : 3차원 배열 & 타입지정----")
print(np.empty((2,5,3),int)) #임의 데이터의 타입을 지정할 수 있다.
print("----np.zeros(5)-----")
#값이 0인 넘파이 배열 생성
print(np.zeros(5))
print(np.zeros((2,5)))
print("----np.zeros((2,5),dtype=int)-----")
print(np.zeros((2,5),dtype=int))
print("----np.zeros((2,5,3),dtype=int)-----")
print(np.zeros((2,5,3),dtype=int))
print("----np.ones(5)-----")
#값이 1인 넘파이 배열 생성
print(np.ones(5))
print(np.ones((2,5)))
print("----np.ones((2,5),dtype=int)-----")
print(np.ones((2,5),dtype=int))
print("----np.ones((2,5,3),dtype=int)-----")
print(np.ones((2,5,3),dtype=int) *10) #broadcast 특성을 이용해 기본 값을 변경 할 수 있다.
print("---------------")
#shape() 활용, 앞에 제공된 행렬과 같은 사이즈의 임의의 행렬을 만들고 싶을 때
datas = [[11,22,33],[44,55,66],[77,88,0]]
print(datas)
ndarray = np.array(datas)
print(ndarray)
print("--np.empty(ndarray.shape) : 특벙 배열과 같은 형태의 행렬 생성----")
print(np.empty(ndarray.shape))
print("--np.empty_like(ndarray) : 특벙 배열과 같은 형태의 행렬 생성----")
print(np.empty_like(ndarray))
print("--np.zeros_like(ndarray) : 특벙 배열과 같은 형태의 행렬 생성----")
print(np.zeros_like(ndarray))
print("--np.ones_like(ndarray) : 특벙 배열과 같은 형태의 행렬 생성----")
print(np.ones_like(ndarray))
print("---------------")
#10fill_identity_eye - 임의의 값 행렬 생성, 단위 행렬 생성
#임의의 넘파이 행렬 생성
<np.full(데이터 갯수, 채울 값)>
- print(np.full(2,33)) #1차원 행렬 생성
<np.full(tuple(행,열), 채울 값)>
- print(np.full((2,3),33)) #2,3 행렬에 모든 값을 33으로 지정
<np.identity(행렬 크기) : 단위 행렬 생성>
#행,열의 수를 동일하게 만들어 주며, 대각선으로 1 생성.
- print(np.identity(2)) #2,2 단위 행렬 생성
- print(np.identity(3,dtype=int)) #정수 타입 단위행렬 생성
<np.eye(행렬 크기) : 정사각,직사각 행렬 생성>
#행,열의 수를 동일하게 만들어 준다.
- print(np.eye(2))
- print(np.eye(3,dtype=int))
#np.eye(행,열,1의 시작 위치,타입) : 정사각,직사각 행렬 생성
- print(np.eye(2,5,1,dtype=int)) #2,5 행렬 / 인덱스 1부터 1 삽입 / int 타입
--예문 코드 보기--
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
print("numpy version",np.__version__) #numpy version check
print("---np.full(데이터 갯수, 채울 값)-----")
print(np.full(2,33))
print("---np.full(tuple(행,열), 채울 값)-----")
print(np.full((2,3),33))
print(np.full((5,5),9))
print("---np.identity(행렬 크기) : 단위 행렬 생성-----")
#행,열의 수를 동일하게 만들어 준다.
print(np.identity(1))
print(np.identity(2))
print(np.identity(3))
print(np.identity(3,dtype=int))
print("---np.eye(행렬 크기) : 정사각,직사각 행렬 생성-----")
#행,열의 수를 동일하게 만들어 준다.
print(np.eye(1))
print(np.eye(2))
print(np.eye(3))
print(np.eye(3,dtype=int))
print("---np.eye(행,열,1의 시작 위치,타입) : 정사각,직사각 행렬 생성-----")
print(np.eye(2,5,1,dtype=int)) #2,5 행렬 / 인덱스 1부터 1 삽입 / int 타입
print("---------------")
#11arange_flatten - 배열 형태 변경, 배열을 평평하게(1차원) 변형
#arange() : 특정 규칙을 가진 행렬 생성 방법
- print(np.arange(10)) #[0,1,2,,,9]
- print(np.arange(start=0,stop=10,step=1)) #0~9
#reshape(row,col) : 일련의 값을 희망하는 형태로 변경.
- 전치와는 달리 희망하는 형태에 맞춰 순서대로 값이 들어간다.
- ndarray = ndarray.reshape(2,5)
- ndarray = ndarray.reshape(2,3,4)
#본래 형태 (1차원 배열)로 되돌리는 법
<np.reshape(ndarray,ndarray.size)>
- ndarray = np.reshape(ndarray,ndarray.size) #배열의 전체갯수를 활용하여 1차 배열로 변경
<np.flatten()>
- print(ndarray.flatten()) #평평하게 (1차원 배열)로 만들어준다.
<ravel()>
- print(ndarray.ravel())
- print(np.ravel(ndarray))
--예문 코드 보기--
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
print("numpy version",np.__version__) #numpy version check
print("---------------")
#arange() : 특정 규칙을 가진 행렬 생성 방법
print(np.array([i for i in range(10)]))
print(np.arange(10))
print(np.arange(start=0,stop=10,step=1))
print("--reshape(row,col) ----")
#일련의 값을 희망하는 형태로 변경(전치와는 달리 희망하는 형태에 맞춰 순서대로 값이 들어간다).
ndarray = np.arange(10)
ndarray = ndarray.reshape(2,5)
print(ndarray)
print(ndarray.shape) #(2,5)
print(ndarray.ndim) #2 : 2차원 배열
ndarray = ndarray.reshape(5,2)
print(ndarray)
print(ndarray.shape) #(5,2)
print(ndarray.ndim) #2 : 2차원 배열
print("--reshape(row,col) ----")
ndarray = np.arange(24)
ndarray = ndarray.reshape(6,4)
print(ndarray)
print(ndarray.shape) #(6,4)
print(ndarray.ndim) #2 : 2차원 배열
ndarray = ndarray.reshape(2,3,4)
print(ndarray)
print(ndarray.shape) #(2,3,4)
print(ndarray.ndim) #3 : 3차원 배열
print("--np.reshape(ndarray,(row,col)) ----")
ndarray = np.arange(24)
ndarray = np.reshape(ndarray,(6,4))
print(ndarray)
print(ndarray.shape) #(6,4)
print(ndarray.ndim) #2 : 2차원 배열
print("--np.reshape(ndarray,(row*col)) ----")
ndarray = np.arange(24)
ndarray = np.reshape(ndarray,(6,4))
print(ndarray)
#본래 형태 (1차원 배열)로 되돌리는 법
ndarray = np.reshape(ndarray,6*4)
ndarray = np.reshape(ndarray,ndarray.size)
print(ndarray)
print(ndarray.shape) #(1,24)
print(ndarray.ndim) #2 : 2차원 배열
print("--np.flatten() ----")
#평평하게 (1차원 배열)로 만들어준다.
ndarray = np.reshape(np.arange(24),(6,4))
print(ndarray)
print(ndarray.flatten())
print(ndarray)#원본이 유지된다.
print("---ravel()---#1차원 배열---")
ndarray = np.reshape(np.arange(24),(6,4))
print(ndarray)
print(ndarray.ravel())
print(np.ravel(ndarray))
print(ndarray)#원본이 유지된다.
#12linspace - 분할 값으로 배열 생성
#np.linspace(시작값,끝값,분할 갯수) : 1차원 배열
- print(np.linspace(0,9,5))
- print(np.linspace(0,1,20))
#np.linspace((시작값s),(끝값s),분할 갯수) : 2차원 배열
- print(np.linspace((2,3,4),(7,8,9),5)) #(2~7),(3~8),(3~9) / 5분할
- print(np.linspace((2,3,4),(7,8,9),10))
#np.logspace((시작값s),(끝값s),분할 갯수) : 2차원 배열
- linspace와 비슷하지만 조금더 정교함
- print(np.linspace(0,1,20))
- print(np.linspace((2,3,4),(7,8,9),10))
--예문 코드 보기--
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
print("numpy version",np.__version__) #numpy version check
print("--np.linspace(시작값,끝값,분할 갯수) : 1차원 배열--")
print(np.linspace(0,9,5))
print("---------------")
print(np.linspace(0,1,20))
print("--np.linspace((시작값s),(끝값s),분할 갯수) : 2차원 배열--")
print(np.linspace((2,3,4),(7,8,9),5))
print("---------------")
print(np.linspace((2,3,4),(7,8,9),10))
print("--np.logspace((시작값s),(끝값s),분할 갯수) : 2차원 배열--")
#linspace와 비슷하지만 조금더 정교함
print(np.linspace(0,1,20))
print("---------------")
print(np.linspace((2,3,4),(7,8,9),10))
print("---------------")