일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- tensorflow
- Project
- 프로젝트
- TypeScript
- 크롤링
- 다나와
- angular
- keras
- AWS
- algorithm
- analyzing
- instance
- pandas
- visualizing
- matplotlib
- python
- opencv
- adaptive life cycle
- javascript
- data
- Crawling
- Method
- 애자일
- data analyze
- 자바스크립트
- Scrum
- webcrawling
- DANAWA
- ECS
- Agile
Archives
- Today
- Total
LiJell's 성장기
05.python_numpy 본문
반응형
modified on Wed Dec 30
# -- coding: utf-8 --
"""
Created on Wed Dec 15 16:12:07 2021
@author: hanju
"""
자료구조
- 리스트 (기본구조)
- 튜플(상수, 불변)
- 딕셔너리(key:value) <<- json java원조 {1:'양진욱', 2:'백혜림', 3:'박윤수'}
- 세트(set) : 집합
- 배열 (numpy)
- 판다스 구조 (Series, DataFrame)
넘파이 (numpy)
- 배열 (array) 생성, 연산
- array: 하나의 데이터 타입 허용 (int, float, ), 다차원 자료구조
import numpy as np
np.array([1,2,3])
array([1, 2, 3]) # 1차원 배열, 1 dimension series
2 .차원 배열 (수리적 모형: 행,열)
np.array([[1,2,3],[4,5,6],[7,8,9]])
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
- 3차원 배열
np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]])
- 1~25까지의 array
np.arange(1,26)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25])
- reshape
np.arange(1,26).reshape(5,5)
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]])
- type
a1=np.arange(1,26)
type(a1)
numpy.ndarray
- 색인
a2 = np.array([[1,2,3],[4,5,6],[7,8,9]])
a2
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
- array[행, 열]
a2[1,:] #1번 위치 행과 모든 열의 값을 나타내라
array([4, 5, 6])
- 정수 색인 (두번째 열 선택: 차원 축소 발생)
a2[:,1] # 1번 위치에 있는 열의 모든 행 값을 반환해라
array([2, 5, 8])
- 슬라이스 색인 (두번 째 열 선택: 차원 축소 발생 안함)
a2[:,1:2] # 모든 행과 1번위치에서 2번 위치 전까지 반환해라
array([[2],
[5],
[8]])
a2
# a2에서 1, 3 행 선택
a2[0:3:2,:]
array([[1, 2, 3],
[7, 8, 9]])
a2[[0,2],:]
array([[1, 2, 3],
[7, 8, 9]])
a2[1,1]
5
a2[[1,2],[1,2]] # return array([5, 9]) # 1번행의 1번 2번열의 2번 뽑기
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# >>>> a2[1,1], a2[2,2] 포인트 인덱싱
# 2개의 포인트(점) 출력
- 색인함수 (ix_())
a2[np.ix_([1,2],[1,2])]
array([[5, 6],
[8, 9]])
# 이렇게 하면 1번행의 1번과 2번열의 2번 사이에 있는 값들을 추출.
a2[[0,1],[1,2]]
array([2, 6])
- 조건 색인
a2 > 5
array([[False, False, False],
[False, False, True],
[ True, True, True]])
a2[a2>5]
array([6, 7, 8, 9]) ture만 출력
a2[:,0] # 첫번째 컬럼 가져와서
a2[:,0] > 5 #5이상인 행만 선택하겠어
a2[a2[:,0] > 5]
array([[7, 8, 9]])
# 조건의 결과를 행방향에 색인 값으로 전달
메서드
a2.dtype # numpy 구성 데이터 타입 확인하고 싶을 때
a2.shape # numpy의 모양(shape)
(3, 3)
a2.shape[0] # numpy 행의 수
a2.shape[1] #numpy 열(컬럼) 수
a2.reshape(1,9) # array 모양 변경 위에서 알고난 수를 참고
a2.ndim # array 차원
- 연산
[1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6] # list 는 서로 원소끼리 연산 불가 (확장으로 해석됨)
np.array([1,2,3]) + np.array([4,5,6])
array([5, 7, 9])
np.array([1,2,3]) + np.array([4,5,6,7])
#서로 사이즈가 같은 배열끼리 연산 가능
- 형 (데이터 타입) 변환 메서드
a2.astype('float')
array([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])
a2.astype('int')
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
a2.astype('str')
array([['1', '2', '3'],
['4', '5', '6'],
['7', '8', '9']], dtype='<U11')
- np.where 함수
- if 문의 축약
- np.where(조건, 참인 값 반환, 거짓인 값 반환)
- SQL문 기본 형태 : select + from db where
np.where(a2>5,'A','B')
array([['B', 'B', 'B'],
['B', 'B', 'A'],
['A', 'A', 'A']], dtype='<U1')
- 산술 연산 메서드
a2.sum()
a2.mean()
a2.var() #분산
a2.std() # 표준편차
a2.min()
a2.max()
(a2 > 5).sum() # a2 에서 5보다 큰 값의 수 ( ture 가 1 이니까 ture의 합 또는 개수)
(a2 > 5).any() # true a2에서 5보다 큰 값이 하나라도 있을 경우 참
(a2 > 5).all() # False a2에서 모두 5 보다 클 경우만 참
a2
'''
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
'''
a2.sum(axis=0) #( 같은 위치에 있는 행의 값들의 합) 행끼리 더해줘 axis=0은 행축
array([12, 15, 18])
a2.sum(axis=1) #( 같은 위치에 있는 열의 값들의 합) 열끼리 더해줘 axis=1은 열축
array([ 6, 15, 24])
# [축 번호]
# 2차원 : 행(0), 열(1)
# 3차원 : 층(0), 행(1), 열(2)
- 전치 메서드
- 행과 열을 바꾼다.
1) T : 행과 열을 전치
np.arange(1,9)
array([1, 2, 3, 4, 5, 6, 7, 8])
a1 = np.arange(1,9).reshape(4,2)
a1
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
a1.T
array([[1, 3, 5, 7],
[2, 4, 6, 8]])
2) swapaxes: 두 축을 전달 받아서 두 축을 서로 전치swap, 전달 순서는 중요하지 않아요
a1
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
a1.swapaxes(0,1) #0번축과 1번축을 swap
array([[1, 3, 5, 7],
[2, 4, 6, 8]])
a1.swapaxes(1,0) # 1번축과 0번축을 swap 어차피 똑같은 말.
array([[1, 3, 5, 7],
[2, 4, 6, 8]])
3) transpose
# 원본의 차원에 맞는 축번호를 인수에 차례대로 전달, 그리고 그대로 전치 전달되는 순서 중요
a1
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
a1.transpose(0,1) #원본 그대로 출력
array([[1, 2],
[3, 4],
[5, 6],
[7, 8]])
a1.transpose(1,0) # 행과 열 전치 따라서 순서가 중요.
array([[1, 3, 5, 7],
[2, 4, 6, 8]])
- 외부 파일 입출력
1) 파일 불러오기
np.loadtxt(fname, # 파일명
dtype, # 데이터타입
delimiter, # 필드 구분 기호
skiprows, # skip 할 행의 수
usecols, # 선택할 컬럼의 값(위치)
encoding) # 인코딩 옵션
np.loadtxt('C:/Users/hanju/Desktop/multicamp/data_bigdata_cert/file1.txt', delimiter=',',dtype='str')
np.loadtxt('./data_bigdata_cert/file1.txt', delimiter=',',dtype='str')
2) 파일 내려쓰기
np.savetxt(fname, # 파일명
X, # 객체명
delimiter, # 구분자
fmt, # 출력형식(format)
header, # 해더 출력 여부(file 첫 문자열)
encoding) # 인코딩 옵션
x = np.arange(0.0,5.0,1.0)
np.savetxt('./data_bigdata_cert/file2.txt', x, delimiter=',', fmt='%s')
# %s: 문자타입 (string)
# [참고 : fmt 전달/변경 방식]
# %s : string
# %f : float
# %d : 숫자
'%s' % 123 #'123'
'%f' % 123 #'123.000000'
'%.2f'% 123 #'123.00' >> 소수점 2째자리까지
'%d' % 123 #'123'
'%7d'% 123 #' 123'
'%-7d' % 123 #'123 '
반응형
'Bigdata > 파이썬_Python' 카테고리의 다른 글
07. Pandas _ Series, DataFrame (0) | 2022.01.01 |
---|---|
06.python_str_method (0) | 2021.12.20 |
04.python_def_lambda_map (0) | 2021.12.15 |
03.python_conditional_statements_loop (0) | 2021.12.15 |
02.python_02_함수와 메서드 (0) | 2021.12.15 |
Comments