달력

12

« 2019/12 »

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  



 

실제 행렬을 사용한 곱셈의 예

 

A 행렬과 B 행렬을 곱한 결과가 C 행렬이 됩니다.

 

 


'Development > Python' 카테고리의 다른 글

예외 처리 try 구문  (0) 2019.11.11
지도 API 사용 방법  (0) 2019.11.10
실제 행렬을 사용한 곱셈의 예  (0) 2019.11.09
멤버 메서드 종류  (0) 2019.11.09
self  (0) 2019.11.08
else 블록  (0) 2019.11.07
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

멤버 메서드 종류

파이썬에서 메서드는 크게 인스턴스 메서드(instance method), 정적 메서드(static method), 클래스 메서드(class method) 있습니다.

·         인스턴스 메서드(instance method)

·         정적 메서드(static method)

·         클래스 메서드(class method)

 

 

 

 

 

인스턴스 메서드(instance method)

 

·         일반 함수와 다른 점은 첫번째 인수로 self 사용합니다.  (관례적으로 self라는 이름을 사용합니다)

·         self 인스턴스 객체 자신의 레퍼런스를 지니고 있습니다. 인스턴스들은 self 이용하여 자신의 이름 공간에 접근합니다.

·         가장 흔히 쓰이는 인스턴스 메서드는 인스턴스 변수에 엑세스할 있도록 메서드의 첫번째 파라미터에 항상 객체 자신을 의미하는 "self"라는 파라미터를 갖습니다.

 

·         인스턴스 메서드는 여러 파라미터를 가질 있지만, 첫번째 파라미터는 항상 self 갖습니다.

 

·         인스턴스 메서드는 "객체변수.메서드명()" 같이 호출할 있습니다.

 

class MyClass:

    def set(self, v):

        self.value = v

    def get(self):

        return self.value

 

 

 

 

 

정적 메서드(static method)

·         인스턴스 객체와 무관하게 클래스 이름 공간에 존재하는 메소드로서 클래스 이름을 이용하여 직접 호출할 있는 메소드입니다.

·         인스턴스 객체를 참조하는 self 인자가 필요하지 않습니다.

·         인스턴스 메서드가 객체의 인스턴스 필드를 self 통해 엑세스할 있는 반면, 정적 메서드는 이러한 self 파라미터를 갖지 않고 인스턴스 변수에 엑세스할 없습니다. 따라서, 정적 메서드는 보통 객체 필드와 독립적이지만 로직상 클래스내에 포함되는 메서드에 사용됩니다.

·         정적 메소드는 해당 클래스의 인스턴스를 통해서도 호출 가능하지만 권장하지 않습니다.

·         정적 메서드는 메서드 앞에 @staticmethod 라는 장식자(Decorator) 표시하여 해당 메서드가 정적 메서드임을 표시합니다.

 

 

정적(static) 메서드 형식

<호출할 메소드 이름> = staticmethod(클래스내 정의한 메소드 이름)

@staticmethod

def 정적메소드명(인자1, 인자2, ...): # self 키워드가 없다.

 

 

 

 

 

 

 

 

클래스 메서드(class method)

·         클래스 영역의 데이터에 직접 접근할 있는 메소드입니다.

·         인스턴스 객체와 무관하게 클래스 이름 공간에 존재하는 메소드로서 클래스 이름을 이용하여 호출하며 인수로 클래스 객체를 자동으로 받는 메소드입니다.

·         암시적으로 인자로 클래스 객체가 전달됩니다.

·         해당 클래스의 인스턴스를 통해서도 호출 가능합니다.

·         클래스 메서드는 메서드 앞에 @classmethod 라는장식자(Decorator) 표시하여 해당 메서드가 클래스 메서드임을 표시합니다.

 

 

 

클래스 메서드와 정적 메서드

·         클래스 메서드는 정적 메서드와 비슷한데, 객체 인스턴스를 의미하는 self 대신 cls 라는 클래스를 의미하는 파라미터를 전달받습니다. 정적 메서드는 cls 파라미터를 전달받지 않습니다. 클래스 메서드는 이렇게 전달받은 cls 파라미터를 통해 클래스 변수 등을 엑세스할 있습니다.

·         일반적으로 인스턴스 데이터를 엑세스 필요가 없는 경우 클래스 메서드나 정적 메서드를 사용하는데, 이때 보통 클래스 변수를 엑세스할 필요가 있을 때는 클래스 메서드를, 이를 엑세스할 필요가 없을 때는 정적 메서드를 사용합니다.

 

클래스 메소드

정적 메소드

@classmethod

cls

@staticmethod

인스턴스 데이터를 엑세스 필요가 없는 경우 사용

인스턴스 데이터를 엑세스 필요가 없는 경우 사용

클래스 변수를 엑세스할 필요가 있는 경우

클래스 변수를 엑세스할 필요가 없는 경우

 

 

cls

self

클래스 자체

객체 자신

 

 

 

 

클래스(class) 메서드 형식

<호출할 메소드 이름> = classmethod(클래스내 정의한 메소드 이름)

@classmethod

def 클래스메소드명(self, 인자1, ...):

 

 


'Development > Python' 카테고리의 다른 글

지도 API 사용 방법  (0) 2019.11.10
실제 행렬을 사용한 곱셈의 예  (0) 2019.11.09
멤버 메서드 종류  (0) 2019.11.09
self  (0) 2019.11.08
else 블록  (0) 2019.11.07
plt.imshow()  (0) 2019.11.06
Posted by codedragon codedragon

댓글을 달아 주세요

2019. 11. 8. 02:00

self Development/Python


 

 

self

·         생성된 객체 자신을 의미합니다.

·         생성된 객체의 멤버에 접근할 사용합니다.

·         생성자의 파라미터로 사용됩니다.

·         JAVA에서 this 해당하는 키워드입니다.

 

 

 

클래스 정의

클래스 정의시 생성자의 파라미터로 사용됩니다.

class MyClass:

    def setdata(self, first, second):

        self.first = first #객체변수 생성

        self.second = second #객체변수 생성

def sum(self):

        result = self.first + self.second

        return result

 

setdata()함수는 입력 인수로 self, first, second라는 3개의 입력값을 받고 있습니다. 그런데 일반적인 함수와는 달리 메서드의 번째 입력 인수로 self라는 특별한 의미를 갖는 변수를 사용합니다.

 

 

 

 

멤버메소드 호출 1

객체명.멤버메소드(인자1, 인자2)

 

mc = MyClass()

mc.setdata(3, 7)

"객체명.메서드" 형태로 호출할 때는 번째 입력 인수(self) 반드시 생략해야 합니다.

mc 객체의 setdata() 메서드가 호출되고 setdata() 메서드의 번째 인수에는 자동으로 mc라는 객체가 입력값으로 들어가게 됩니다.

, MyClass setdata()메소드의 입력 인수는 self, first, second 3개이지만 mc.setdata(3, 7)처럼 2개의 입력값만 주어도 mc라는 객체가 setdata() 함수의 번째 입력을 받는 변수인 self 대입되게 됩니다.

인자

대입되는

self

mc

 

자동으로 번째 인수로 실행 객체가 대입됩니다.

first

3

second

7

 

 

 

 

 

멤버메소드 호출 2

클리스명.멤버메소드(객체명, 인자1, 인자2)

 

mc = MyClass()

MyClass.setdata(mc, 3, 7)

"클래스명.멤버메서드" 형태로 호출할 때는 객체 mc 입력 인수로 넣어 주어야 합니다.

 

 

 

 

 

멤버메소드 - setdata()

클래스의 정의 코드

동일한 해석 코드

self.first = first

self.second = second

mc.first = first

mc.second = second

 

 

 

 

 

 

멤버 메소드 - sum()

def sum(self):

   result = self.first + self.second

   return result

mc.sum()

입력으로 받는 값은 self밖에 없고 반환값은 result입니다.

mc.sum()으로 메소드를 수행하면 sum 메서드에 자동으로 객체 mc 번째 입력 인수인 self 들어가게 됩니다.

 

메소드의 정의 코드

동일한 해석 코드

result = self.first + self.second

result = mc.first + mc.second

 

 



'Development > Python' 카테고리의 다른 글

실제 행렬을 사용한 곱셈의 예  (0) 2019.11.09
멤버 메서드 종류  (0) 2019.11.09
self  (0) 2019.11.08
else 블록  (0) 2019.11.07
plt.imshow()  (0) 2019.11.06
다차원 실수형 데이터 시각화, seaborn.pairplot()  (0) 2019.11.05
Posted by codedragon codedragon

댓글을 달아 주세요

2019. 11. 7. 14:58

else 블록 Development/Python



 

 

else 블록

·         반복문 수행도중 break 인하여 중간에 종료되지 않고 끝까지 수행되었을 , else 블록이 수행됩니다.

·         break 의하여 루프를 빠져나가면 else 블록도 수행되지 않습니다.

 


'Development > Python' 카테고리의 다른 글

멤버 메서드 종류  (0) 2019.11.09
self  (0) 2019.11.08
else 블록  (0) 2019.11.07
plt.imshow()  (0) 2019.11.06
다차원 실수형 데이터 시각화, seaborn.pairplot()  (0) 2019.11.05
주피터 노트북(Jupyter Notebook)  (0) 2019.11.04
Posted by codedragon codedragon

댓글을 달아 주세요

2019. 11. 6. 18:30

plt.imshow() Development/Python


 

 

plt.imshow()

·         화상(image) 데이터처럼 행과 열을 가진 행렬 형태의 2차원 데이터의 크기를 색깔로 표시합니다.

·         이미지를 출력할 있는 함수입니다.

 

https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow

 

matplotlib.pyplot.imshow(X, cmap=None, interpolation=None)

 

인자

설명

X

행렬 형태의 데이터

cmap

ColorMAP 지정합니다.

데이터 수치를 색으로 바꾸는 함수는 칼라맵(color map)이라고 합니다.

 

 

interpolation

자료의 시각화를 돕기위해 아래값 하나를 지정합니다.

 

none(기본값), nearest, bilinear, bicubic, spline16, spline36, hanning, hamming, hermite, kaiser, quadric, catrom, gaussian, bessel, mitchell, sinc, lanczos

 

 

Colormaps in Matplotlib

https://matplotlib.org/tutorials/colors/colormaps.html

 


'Development > Python' 카테고리의 다른 글

self  (0) 2019.11.08
else 블록  (0) 2019.11.07
plt.imshow()  (0) 2019.11.06
다차원 실수형 데이터 시각화, seaborn.pairplot()  (0) 2019.11.05
주피터 노트북(Jupyter Notebook)  (0) 2019.11.04
2.Summary - 2.함수  (0) 2019.11.03
Posted by codedragon codedragon

댓글을 달아 주세요




 

 

다차원 실수형 데이터 시각화

·         3차원 이상의 데이터라면 seaborn 패키지의 pairplot()메소드를 사용합니다.

·         pairplot() 데이터프레임을 인수로 받아 그리드(grid) 형태로 데이터 열의 조합에 대해 스캐터 플롯(Scatter plot) 그리며 같은 데이터가 만나는 대각선 영역에는 해당 데이터의 히스토그램을 그려줍니다.

 

 

 

 

pairplot()

·         데이터프레임을 인수로 받아 그리드(grid) 형태로 데이터 열의 조합에 대해 스캐터 플롯을 그립니다.

·         같은 데이터가 만나는 대각선 영역에는 해당 데이터의 히스토그램을 그립니다.

·         카테고리형 데이터가 섞여 있는 경우에는 hue 인자에 카테고리 변수 이름을 지정하여 카테고리 값에 따라 색상을 다르게 있습니다.

 

seaborn.pairplot(data, hue=None, hue_order=None, palette=None, vars=None, x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None, height=2.5, aspect=1, dropna=True, plot_kws=None, diag_kws=None, grid_kws=None, size=None)

 

인자

설명

data

·         대상이 되는 데이터프레임을 지정합니다.

hue

·         카테고리 변수 이름을 지정

·         hue 인수에 카테고리 변수 이름을 지정하여 카테고리 값에 따라 색상을 다르게 있습니다.

markers

·         마커 모양을 지정합니다.

 

 

http://seaborn.pydata.org/generated/seaborn.pairplot.html


 


'Development > Python' 카테고리의 다른 글

else 블록  (0) 2019.11.07
plt.imshow()  (0) 2019.11.06
다차원 실수형 데이터 시각화, seaborn.pairplot()  (0) 2019.11.05
주피터 노트북(Jupyter Notebook)  (0) 2019.11.04
2.Summary - 2.함수  (0) 2019.11.03
deck.gl - 위치 데이터 시각화 라이브러리  (0) 2019.11.03
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

주피터 노트북(Jupyter Notebook)

·         IPython 노트북에서 여러 언어를 포괄하는 프로젝트인 주피터 노트북으로 이름이 바뀌었습니다.

·         Jupyter 이름은 줄리아(Julia), 파이썬(Python), R 합성어입니다.

·         목성의 발음과 같아 과학자들과 천문학자들에 대한 경의가 담겨 있기도 합니다.

·         로고의 가운데 원은 목성(Jupiter) 의미하며 주위 3개의 작은 원은 1610 목성의 위성 3개를 최초로 발견한 갈릴레오 갈릴레이(Galileo Galilei) 기리는 의미를 가지고 있습니다.

·         프로그램 코드를 브라우저에서 실행해주는 대화식 환경을 제공해 줍니다.

·         대화식으로 개발 위해서는 IPython 주피터 노트북을 설치해야 합니다.

·         브라우저에서 R 또는 파이썬 등을 실행할 있는 다중 언어 실행 환경 제공해 줍니다.

 

https://zetawiki.com/wiki/Jupyter

https://en.wikipedia.org/wiki/IPython#Project_Jupyter

 

 

 

https://jupyter.org/i


 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

1

x y로 나누었을 때의 몫과 나머지가 출력되게 메소드를 만드시오.

x = 20

y = 3

 

 

 

 

 

quotient, remainder = get_quotient_remainder(x, y)

print(': {0}, 나머지: {1}'.format(quotient, remainder))

 

 

 

 

 

x = 20

y = 3

 

 

 

def get_quotient_remainder(a, b):

    return a // b, a % b

 

 

 

quotient, remainder = get_quotient_remainder(x, y)

print(': {0}, 나머지: {1}'.format(quotient, remainder))

 

 

 

 

 

 

 

 

 

 

2

가장 높은 점수를 구하는 함수를 만드시오.

korean, english, mathematics, science = 100, 72, 81, 92

 

 

 

max_score = get_max_score(korean, english, mathematics, science)

print('높은 점수:', max_score)

 

 

max_score = get_max_score(english, science)

print('높은 점수:', max_score)

 

 

 

높은 점수: 100

높은 점수: 92

 

 

 

 

 

korean, english, mathematics, science = 100, 72, 81, 92

 

# 함수 작성

# 가변 인수 함수로 작성

def get_max_score(*args):

    return max(args)

 

 

max_score = get_max_score(korean, english, mathematics, science)

print('높은 점수:', max_score)

 

 

max_score = get_max_score(english, science)

print('높은 점수:', max_score)

 

 

 

 

 

 

 

 

 

 

3

"패스워드 검증기" 프로그램을 작성하시오.

input()함수로 사용자로 부터 패스워드를 입력받습니다.

• 패스워드 규칙은 8자 이상이고 영어와 숫자가 혼환된 형태이어야 합니다.

• 패스워드 규칙에 맞으면 True를 틀리면 False를 반환합니다.

• 패스워드 검증 부분은 별도의 함수로 작성하고 검증에 대한 적절한 메시지로 사용자에게 알려줍니다.

 

패스워드 검증에 실패한 경우

Input your password > qwert

Not valid Password

Input your password > 1234

Not valid Password

Input your password > qwer123

Not valid Password

 

 

패스워드 검증에 성공한 경우

Input your password > qwert1234

Access Granted !!!

 

 

 

 

 

def validatePassword(password):   

    # 8자 이하이면 False

    if len(password) < 8:

        return False

    elif password.isalpha():

        return False

    elif password.isnumeric():

        return False

    else:

        return True

 

 

user_password = input('Input your password > ')

 

if validatePassword(user_password):

    print('Access Granted !!!')

else:

    print('Not valid Password')

 

 

 

 

 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

deck.gl

·         위치 데이터 시각화 라이브러리

·         대규모 데이터 세트의 시각적 탐색 데이터 분석을 위한 WebGL 기반 프레임워크

·         WebGL-powered framework for visual exploratory data analysis of large datasets.

·         Uber 팀에서 만든 deck.gl python 패키지 pydeck 통해 사용할 있습니다.

 

 

https://deck.gl


 

 

 

deck.gl examples

https://deck.gl/#/examples/overview


 

 


'Development > Python' 카테고리의 다른 글

주피터 노트북(Jupyter Notebook)  (0) 2019.11.04
2.Summary - 2.함수  (0) 2019.11.03
deck.gl - 위치 데이터 시각화 라이브러리  (0) 2019.11.03
opencv 하위 버전으로 변경하기  (0) 2019.11.03
WordCloud for Python  (0) 2019.11.02
오차 역전파 수행 과정  (0) 2019.11.01
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

opencv 하위 버전으로 변경하기

·       {opencv-contrib-python}, {opencv-python} 기존 설치 버전 삭제 하위 버전으로 설치합니다.

·       4.1.1.26 -> 3.4.2.16 으로 변경합니다.

 

 

 

 

 

패키지 설치 버전 확인

C:\CodeLab>pip list | findstr opencv

opencv-contrib-python 4.1.1.26

opencv-python         4.1.1.26

 

C:\CodeLab>

 

 

 

 

 

기존 설치 버전 삭제 - 4.1.1.26

 

pip uninstall opencv-contrib-python

pip uninstall opencv-python

 

C:\CodeLab>pip uninstall opencv-contrib-python

Uninstalling opencv-contrib-python-4.1.1.26:

  Would remove:

    c:\python\python36\lib\site-packages\cv2\*

    c:\python\python36\lib\site-packages\opencv_contrib_python-4.1.1.26.dist-info\*

Proceed (y/n)? y

  Successfully uninstalled opencv-contrib-python-4.1.1.26

ERROR: Exception:

Traceback (most recent call last):

  File "C:\Python\Python36\lib\site-packages\pip\_internal\cli\base_command.py", line 153, in _main

    status = self.run(options, args)

  File "C:\Python\Python36\lib\site-packages\pip\_internal\commands\uninstall.py", line 82, in run

    uninstall_pathset.commit()

  File "C:\Python\Python36\lib\site-packages\pip\_internal\req\req_uninstall.py", line 450, in commit

    self._moved_paths.commit()

  File "C:\Python\Python36\lib\site-packages\pip\_internal\req\req_uninstall.py", line 290, in commit

    save_dir.cleanup()

  File "C:\Python\Python36\lib\site-packages\pip\_internal\utils\temp_dir.py", line 100, in cleanup

    rmtree(self._path)

  File "C:\Python\Python36\lib\site-packages\pip\_vendor\retrying.py", line 49, in wrapped_f

    return Retrying(*dargs, **dkw).call(f, *args, **kw)

  File "C:\Python\Python36\lib\site-packages\pip\_vendor\retrying.py", line 212, in call

    raise attempt.get()

  File "C:\Python\Python36\lib\site-packages\pip\_vendor\retrying.py", line 247, in get

    six.reraise(self.value[0], self.value[1], self.value[2])

  File "C:\Python\Python36\lib\site-packages\pip\_vendor\six.py", line 693, in reraise

    raise value

  File "C:\Python\Python36\lib\site-packages\pip\_vendor\retrying.py", line 200, in call

    attempt = Attempt(fn(*args, **kwargs), attempt_number, False)

  File "C:\Python\Python36\lib\site-packages\pip\_internal\utils\misc.py", line 140, in rmtree

    onerror=rmtree_errorhandler)

  File "C:\Python\Python36\lib\shutil.py", line 494, in rmtree

    return _rmtree_unsafe(path, onerror)

  File "C:\Python\Python36\lib\shutil.py", line 389, in _rmtree_unsafe

    onerror(os.unlink, fullname, sys.exc_info())

  File "C:\Python\Python36\lib\shutil.py", line 387, in _rmtree_unsafe

    os.unlink(fullname)

PermissionError: [WinError 5] 액세스가 거부되었습니다: 'c:\\python\\python36\\lib\\site-packages\\~v2\\cv2.cp36-win_amd64.pyd'

 

C:\CodeLab>pip uninstall opencv-contrib-python

WARNING: Skipping opencv-contrib-python as it is not installed.

 

C:\CodeLab>pip uninstall opencv-python

Uninstalling opencv-python-4.1.1.26:

  Would remove:

    c:\python\python36\lib\site-packages\opencv_python-4.1.1.26.dist-info\*

Proceed (y/n)? y

  Successfully uninstalled opencv-python-4.1.1.26

 

C:\CodeLab>

 

 

 

 

하위 버전으로 설치 - 3.4.2.16

pip install opencv-python==3.4.2.16

pip install opencv-contrib-python==3.4.2.16

 

C:\CodeLab>pip install opencv-python==3.4.2.16

Collecting opencv-python==3.4.2.16

  Downloading https://files.pythonhosted.org/packages/eb/6c/c3e960a495dc7ac5f542cc5a8cc177a218aba30aaed2b0d55c1dc5c1693d/opencv_python-3.4.2.16-cp36-cp36m-win_amd64.whl (33.8MB)

     |████████████████████████████████| 33.8MB 939kB/s

Requirement already satisfied: numpy>=1.11.3 in c:\python\python36\lib\site-packages (from opencv-python==3.4.2.16) (1.14.4)

Installing collected packages: opencv-python

Successfully installed opencv-python-3.4.2.16

 

C:\CodeLab>pip install opencv-contrib-python==3.4.2.16

Collecting opencv-contrib-python==3.4.2.16

  Downloading https://files.pythonhosted.org/packages/61/34/b0cbb7689ab23b37a7e1b6e2e8da228b2561ca39923a6403b1cf76ac2d31/opencv_contrib_python-3.4.2.16-cp36-cp36m-win_amd64.whl (39.6MB)

     |████████████████████████████████| 39.6MB 96kB/s

Requirement already satisfied: numpy>=1.11.3 in c:\python\python36\lib\site-packages (from opencv-contrib-python==3.4.2.16) (1.14.4)

Installing collected packages: opencv-contrib-python

Successfully installed opencv-contrib-python-3.4.2.16

 

C:\CodeLab>

 

 

 

 

패키지 설치 버전 확인

4.1.1.26 -> 3.4.2.16 으로 변경되었습니다.

C:\CodeLab>pip list | findstr opencv

opencv-contrib-python 3.4.2.16

opencv-python         3.4.2.16

 

C:\CodeLab>

 

 



'Development > Python' 카테고리의 다른 글

2.Summary - 2.함수  (0) 2019.11.03
deck.gl - 위치 데이터 시각화 라이브러리  (0) 2019.11.03
opencv 하위 버전으로 변경하기  (0) 2019.11.03
WordCloud for Python  (0) 2019.11.02
오차 역전파 수행 과정  (0) 2019.11.01
NumPy의 random 서브패키지  (0) 2019.10.31
Posted by codedragon codedragon

댓글을 달아 주세요