matplotlib


- 그래프를 그려주는 라이브러리


* 단순한 그래프 그리기

- pyplot 모듈 이용

import numpy as np
import matplotlib.pyplot as plt

# 데이터 준비
x = np.arrange(0, 6, 0.1) # 0에서 6까지 0.1간격으로 생성
y = np.sin(x)

# 그래프 그리기
plt.plot(x, y)
plt.show()


- pyplt의 기능

import numpy as np
import matplotlib.pyplot as plt

# 데이터 준비
x = np.arange(0, 6, 0.1) # 0에서 6까지 0.1간격으로 생성
y1 = np.sin(x)
y2 = np.cos(x)

# 그래프 그리기
plt.plot(x, y1, label="sin")
plt.plot(x, y2, linestyle="--", label="cos")
plt.xlabel("x") # x축 이름
plt.ylabel("y") # y축 이름
plt.title('sin & cos') # 제목
plt.legend()
plt.show()


- 이미지 표시하기

import matplotlib.pyplot as plt
from matplotlib.image import imread

img = imread('image.jpg')

plt.imshow(img)
plt.show()


'파이썬' 카테고리의 다른 글

numpy array, broadcast  (0) 2017.10.03
__init__  (0) 2017.10.03
Three way for counting  (0) 2017.08.30
konlpy 설치  (0) 2017.08.30
beautiful soup 4, lxml, requests 설치 방법  (1) 2017.08.30

numpy array(넘파이 배열)



* 코드

>>> import numpy as np

>>> x = np.array([1.0, 2.0, 3.0])

>>> print(x)

[1. 2. 3.]

>>> type(x)

<class 'numpy.ndarray'>

>>> y = np.array([2.0, 4.0, 6.0])

>>> x * y

array([2., 8., 18.])


* 표현

- 원소별: element-wise

- 원소별 곱셈: element-wise product


* n차원 배열

>>> A = np.array([[1, 2], [3, 4]])

>>> print(A)

[[1 2]

 [3 4]]

>>> A.ahpe

(2, 2)

>>> A.dtype

dtype('int64')


* 원소 접근

>>> X = np.array([[51, 55], [14, 19], [0, 4]])

>>> print(X)

[[51 55]

 [14 19]

 [ 0   4]]

>>> X[0]

array([51, 55])

>>> X[0][1])

55


>>> for row in X:

...        print(row)

...

[[51 55]

 [14 19]

 [ 0   4]]


>>> X = X.flatten()

>>> print(X)

[51 55 14 19 0 4]

>>> X[np.array([0, 2, 4])] # 인덱스가 0, 2, 4인 원소 얻기

array([51, 14, 0])


>>> X > 15

array([ True, True, False, True, False, False], dtype=bool)

>>> X( X>15)

array([51, 55, 19])




braodcast(브로드캐스트)



- 넘파이 배열과 수치 하나(스칼라값) 산술 연산도 가능


* 코드

>>> x = np.array([1.0, 2.0, 3.0])

>>> x / 2.0

array([0.5., 1., 1.5])


* 코드2

>>> A = np.array([[1, 2], [3, 4]])

>>> B = np.array([10, 20]])

>>> A * B

array([[ 10, 40],

        [ 30, 80]])



'파이썬' 카테고리의 다른 글

matplotlib  (0) 2017.10.03
__init__  (0) 2017.10.03
Three way for counting  (0) 2017.08.30
konlpy 설치  (0) 2017.08.30
beautiful soup 4, lxml, requests 설치 방법  (1) 2017.08.30

__init__



- 클래스 정의에서 사용되는 메서드

- 클래스를 초기화하는 방법을 정의

- 생성자(constructor)라고도 부름

- 클래스의 인스턴스가 만들어질 때 한번만 불림

- 매서드의 첫 번째 인수로 자신(자신의 인스턴스)을 나타내는 self를 명시적으로 쓰는 것이 특징


- 인스턴스 변수: 인스턴스별로 저장되는 변수




* 예제


class Man: 

def __init__(self, name):

self.name = name

print("Initialized!")


def hello(self):

print("Hello " + self.name + "!")


def goodbye(self):

print("Good-bye " + self.name + "!")


m = Man("David")

m.hello()

m.goodbye()



* 코드 설명


- m: 인스턴스(객체)

- name: 인수

- self.name: 인스턴스 변수


'파이썬' 카테고리의 다른 글

matplotlib  (0) 2017.10.03
numpy array, broadcast  (0) 2017.10.03
Three way for counting  (0) 2017.08.30
konlpy 설치  (0) 2017.08.30
beautiful soup 4, lxml, requests 설치 방법  (1) 2017.08.30

개앞맵시 인공지능/딥러닝 편


- 개발자의 앞길에 맵핵 시전 ㅋㅋㅋㅋㅋ


- 페이스북: https://facebook.com/dev.loadmap

- 로드맵 모음:https://mindmeister.com/users/channel/wegra

- 스카이넷도 딥러닝부터: https://mindmeister.com/812276967/_

알고리즘 정렬 - 수행 시간 분석


1. 수행시간 분석이란 무엇인가?

- 문제의 크기(입력의 크기)가 증가함에 따라 처리 시간이 얼마나 증가하는지를 분석하는 것

- 입력의 크기: 입력되는 항목의 개수, 문제의 종류에 따라 입력의 종류 바뀜

=> 배열의 크기

=> 다항식의 차수

=> 행렬의 항목 개수

=> 이진으로 표현된 입력의 비트 수

=> 그래프에서의 정점과 간선 등


2. 알고리즘을 비교하는 객관적 기준

1) 실행 시간

: 컴퓨터에 따라 실행 시간이 달라지기 때문에 좋은 기준이 아님

2) 실행된 구문의 수

: 프로그래밍 언어나 프로그래머의 스타일에 따라 구문의 수가 달라지므로 좋은 기준이 아님

3) 이상적인 해법

: 주어진 알고리즘의 수행 시간을 입력 크기 n에 따른 함수 f(n)으로 표현하고 수행 시간에 따라 이함수들을 비교하면 됨


3. 증가율이란?


데이터형


1. system defined data type(시스템 정의 데이터형)

- int, float, char, double, bool 등

- 각각의 원시 데이터형에 할당된 비트 수는 프로그래밍 언어, 컴파일러, 운영체제에 따라 다름

(출처: 다양한 예제로 학습하는 데이터 구조와 알고리즘 for Java)


2. user-defined data type (사용자 정의 데이터형, 원시 데이터형)

- 프로그램 내에서 정의되는 데이터형

- 보통 사용하는 프로그램 작성 언어에 의해 지정된 복수의 데이터형을 조합시킨 것

- 데이터 구조를 만드는 데 사용되는 경우가 많음 

(출처: 한국정보통신기술협회,  http://www.tta.or.kr)



데이터 구조

- 효율적으로 데이터를 사용하기 위해 컴퓨터에 데이터를 저장하고 정리하는 특별한 방법

- 데이터를 정리하고 저장하는데 특화된 체제

- 배열, 파일, 연결 리스트, 스택, 큐, 트리, 그래프 등


1. 선형 데이터 구조

- 항목들이 순차적 차례에 따라 접근되지만 순차적으로 저장되어야 하는 것은 아님

- 연결 리스트, 스택, 큐


2. 비선형 데이터 구조

- 항목들이 비선형의 차례로 저장/접근 됨

- 트리, 그래프



ADT(abstract data type, 추상 데이터형)

- 문제를 푸는 과정을 단순화시키기위해 데이터 구조와 연산을 합쳐 놓은 것

- 두 부분으로 구성

1) 데이터의 선언

2) 연산의 선언

- 주로 사용되는 ADT: 연결 리스트, 스택, 큐, 우선순위 큐, 이진 트리, 딕셔너리, 서로소 집합(Union, Find), 해시 테이블, 그래프 등


'데이터 구조와 알고리즘' 카테고리의 다른 글

알고리즘 정렬 - 수행 시간 분석  (0) 2017.09.16

+ Recent posts