본문 바로가기

파이썬/파이썬 예제 코드

[파이썬 예제코드] 라이브러리

# 파이썬은 라이브러리를 사용함으로써 강력한 성능을 제공한다.

import math
print("math 라이브러리 타입은 {}입니다.".format(type(math)))
# 위의 값을 출력하면 <class 'module'> 이라는 값이 출력이 된다.
# math는 모듈이라고 표시 한다. 모듈이란 변수, 함수, 클래스 등을 모아놓은 집합체 이다.

# 내장함수인 dir()을 사용하여 math에 담긴 정보를 확인해보자.
print(dir(math), sep=' ')
# 위의 값을 출력하면 여러 변수가 리스트 형태로 출력된다.

print("pi 의 4자리수 표기 {:.4}".format(math.pi))
# math.log를 실행하여 값을 확인해 봅시다.
math.log(32, 2)
print(math.log(32, 2))
# math.log가 무슨 기능을 하는지 찾아 봅시다.
help(math.log)
print(help(math.log))
help(math)
print(help(math))

# import 문법
# import 모듈 as 이름
import math as mt
mt.pi
print(mt.pi)

# math 모듈에서 pi만 가져오는게 가능할까? 가능하다.
from math import *
print(pi, log(32, 2))

# imprt *은 모든 모듈의 변수에 집접 엑세스 하겠다는 의미.
# 기본 내장함수에 math를 포함하겠다로 이해하면 된다.

# # 아래 코드는 에러가 발생한다. 이유는 math에도 log 함수가 있고, numpy에도 log 함수가 있기 때문에 충돌 문제로 오류가 발생한다.
# from math import *
# from numpy import *
# print(pi, log(32, 2))

# 위의 함수 충돌 오류를 해결하는 방법
# *로 모두 불러오는 것이 간편하지만, 예상치 못한 변수로 인해 에러가 발생할 수 있으므로 함수를 지정하는것을 권장한다.
from math import log, pi
from numpy import asarray
print(pi, log(32, 2))

# 서브 모듈
import numpy
print("numpy.random 의 타입은 {}입니다.", type(numpy.random))
print("이 함수는 다음을 포함합니다.\n",
      dir(numpy.random)[-15]
      )
# 즉 numpy를 불러오고 random을 가져오고, 그 하위 모듈까지 호출 하기 위해서는 아래와 같이 2개의 dot이 필요합니다.
# 클래스의 함수를 변수로 선언한다.
rolls = numpy.random.randint(low=1, high=6, size=10)
print(rolls)
# numpy.random.randint(low, high, size, dtype) 옆과 같이 4개의 기본 인자값이 필요함.
# 만약 인자값을 2개만 입력할 경우? 인자값이 적어도 입력된 인자값을 기반으로 작업 수행이 가능하다.
rolls_01 = numpy.random.randint(low=1, high=6)
print(rolls_01)

# [낯선 객체를 이해하는데 사용하는 3가지 툴]
# numpy의 array에 대한 정보 없이 함수에 대해서 알아보는 방법
type(rolls)
print(type(rolls))
# dir()는 객체가 어떤 변수와 메소드를 가지고 있는지 나열해 줍니다.
print(dir(rolls))

# rolls 객체에 print(dir(rolls))를 실행하면 mean을 발견할 수 있습니다.
# 단어의 의미를 유추해보면 평균을 계산해주는 함수일거 같습니다. mean을 실행해 봅시다.
rolls.mean()
print(rolls.mean())

# rolls 객체에서 tolist()를 실행해 봅시다.
rolls.tolist()
print(rolls.tolist())

# help() 모듈에 대한 사용법을 알려줍니다.
# 다차원 배열에 대해 ravel을 사용하여 1차원으로 만들수 있습니다.
help(rolls.ravel)

# numpy의 공식 사이트 : https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.ndarray.html

# [연산자 오버로딩]
# 연산자 오버로딩에서 파이썬은 연산자의 종류와 타입에 따라 다른 의미를 갖는 기술을 제공 합니다.
# 이와같은 방법을 연산자 오버로딩 이라고 합니다.

# 주사위 값이 3이거나 작은 경우를 찾아보세요.
rolls <= 3
print(rolls <= 3)

# 새로운 배열을 통해 값을 확인해 봅시다.
xlist = [[1,2,3],[2,4,6],]
# 2차원 배열을 생성 합니다.
x = numpy.asarray(xlist)
print("xlist = {}\nx = \n{}".format(xlist, x))
# numpy array(배열)의 두 번째 행의 마지막 요소를 가져옵니다.
x[1, -1]
print(x[1, -1])

# 1+1이 2가 아닌경우...
import tensorflow as tf
a = tf.constant(1)
b = tf.constant(1)
a + b
print(a + b)

# pandas의 dataframe을 가지고 예시를 만들어보자...
# 남아메리카에서 인구가 1M이상인 행을 가져오는 코드 입니다.
# df[(df['population'] > 10*6) & (df['continent'] == 'South America')]