기본 콘텐츠로 건너뛰기

라벨이 함수인 게시물 표시

[matplotlib]quiver()함수

함수 그래프 그리기: 최대와 최소 찾기

작성된 그림은 전자책 파이썬과 함께하는 미분적분 에서 Chapter 5.1에서 소개한 여러 그래프들과 그 코드입니다. import numpy as np from sympy import * import matplotlib.pyplot as plt import seaborn as sns def tgline(slope, x0, y0, x): b=y0-slope*x0 re=slope*x+b return(re) def scantline(x0, y0, x1, y1, x): s, b=symbols("s, b") eq1=x0*s+b-y0 eq2=x1*s+b-y1 re=solve([eq1, eq2], (s, b)) re1=float(re[s])*x+float(re[b]) return(re1) CH 5.1 #그림 5.1.1 x=np.linspace(-4,4, 100) y=x**2 plt.figure(figsize=(4, 3)) plt.plot(x, y, color="g", label=r"f(x)=$x^2$") for i in np.arange(-3, 4): if i==-1: nme=r"$\frac{df(x)}{dx} < 0$" elif i==1: nme=r"$\frac{df(x)}{dx} \geq 0$" else: nme="" plt.plot(x, tgline(2*i, i, i**2, x), ls="--", alpha=0.5, color=['r' if i < 0 else 'b'][0], label=nme) plt.xlabel("x", loc="right", fontsize="11") plt.ylabel("y...

[seaborn] seaborn의 함수에 사용하는 속성(인수)들

seaborn의 함수에 사용하는 인자들 인수 특성 좌표속성 좌표속성은 플롯에 마크가 그려지는 위치를 결정 x는 수평위치, y는 수직위치 각 변수들의 구간을 설정하기 위해 xmin, xmax, ymin, ymax를 사용 normal scale: 정수 인덱스를 명목변수에 할당하기 위해 사용 Temporal scale: 기준 시점에서 날짜의 수를 나타냄 Continuous scale: 일반적인 수치 값을 나타내지만 trans="log" 등을 사용하여 값들의 위치에 차이를 둡니다. 컬러속성 color(마터 자체와 내부 색), fillcolor(마커 내부 색), edgecolor(마커의 자체의 색) 여러색을 나타내기 위해 매개변수 palette에 viridis, rocket, deep 등을 지정 알파속성 alpha는 마크의 불투명도를 지정 마커속성 매개변수 marker에 지정 matplotlib.markers 참조 선 속성 linestyle, '-', '--', '-.', 및 ':' 로 지정. dashes의 경우 선과 선 사이의 공백이 존재합니다. 그러므로 선의 길이와 공백의 길이를튜플로 지정 예) (5, 2) 선폭속성 linewidth=float로 지정 edgewidth 점과 같이 원형과 같은 마크 자체의 두께를 지정 포인트크기 pointsize=정수(마크의 직경) 데이터 값을 지정할 수 있음, 면적에 선형적으로 비례하며 스케일은 제곱근으로 변환되어 적용 stroke edgewidth와 유사하지만 'x'와 같은 마크의 두께를 지정 텍스트 속성 수평 정렬 halign= left, right, center 수직 정렬=top, bottom, center, baseline, center_baseline 글꼴 크기 fontsize=1~26 offset class="txtl...

[Linear Algebra]변환과 관련된 용어

변환과 관련된 용어 선형대수에서 변환(transformation)은 함수(function)를 의미합니다. 함수는 어떤 객체에 대해 한개이상의 연산 과정을 실시하여 다른 결과를 반환하는 연산의 모둠이라고 할 수 있습니다. 즉, 변환(함수)에 의해 x 1 이라는 인자를 투입하면 y 1 또는 y 1 , y 2 , ... 등 다중의 결과를 반환할 수도 있습니다. 이와 같은 변환과정에 빈번히 사용되는 용어들을 정리해보면 다음과 같습니다. 1.사상(mapping, Function) 입력(X) → 함수(f) → 출력(Y) ⇔ f: x rarr; y ⇔ y = f(x) 위 관계를 "집합 X에서 집합 Y로의 사상(함수)"이라고 표현합니다. 2. 상(Image) 위의 입력 X가 함수에 적용되면 입력값에 대응되는 Y가 반환됩니다. 그 함수에 대응하여 반환되는 각각의 결과를 상(image)라고 합니다. 3. 정의역(domain), 공역(codomain), 치역(range) 상을 나타내기 위한 입력 집합을 정의역 함수의해 생성될 가능성이 있는 모든 부분을 공역 공역 중에서 함수에 의해 생성되는 결과들의 집합을 치역(image, 상) 공역(Y)과 치역($y_i$ i=...-1, 0, 1,...)은 같을 수가 있습니다. $y_i \subseteq Y$ 4. 핵(kernel) $T: R^n \rightarrow R^n$의 선형변환에서 즉, 함수 T에 의해 정의역에 대한 상이 0이 되는 전체 집합을 T의 핵(kernel)이라 하며 kerT 로 나타냅니다. kerT = { v &in; R n | T(v) = 0 } 예) 다음 변환의 핵(ker T)를 결정합니다. $$T: R^2 \rightarrow R^2,\; T(x, y) =(x-y, 0)$$ 위 선형변환의 표준행렬을 생각해 보면 다음과 같습니다. \begin{align}T\left(\begin...

[python] 주요 함수와 메서드

함수와 메소드 내용 A B C D E F G H I J K L M N O P Q R S T U V W Z A statsmodels.tsa.stattools.acf(x, adjusted=False, nlags, qstats=False, alpha=None,...) 매개변수 nlags에 지정한 시차까지의 자기상관계수를 반환 adjusted=True이면 자유도 (샘플수 - 설명변수의 수)를 고려 qstats=True이면 Ljung-Box q statistic 분석 즉, 자기상관=0 이라는 귀무가설을 검정하고 p-value를 반환 alpha를 지정하면 신뢰구간을 반환, 0.05 경우 95% 신뢰구간 statsmodels.ap.add_constant(설명변수) 설명변수의 행렬에 모든 요소들이 1인 편차항을 포함시킵니다. $$X=\begin{bmatrix}x_1\\x_2\\\vdots\\x_n\end{bmatrix} \rightarrow X0=\begin{bmatrix}1& x_1\\1& x_2\\\vdots\\1& x_n\end{bmatrix}$$ np.allclose(A, B, rtol = 1e−05, atol = 1e−08) 객체 A, B의 모든 원소가 같으면 True, 그렇지 않으면 False를 반환 각 원소값은 상대 임계값(rtol)과 절대 임계값(atol)을 기준 rtol과 atol의 기본값은 각각 소수점 이하 5자리 그리고 8자리까지 비교 scipy.stats.ansderson(x, dist="norm") x: 배열 계열의 객체 dist: 다양한 분포를 지정할 수 있음(‘norm’, ‘expon’, ‘logistic’, ‘gumbel’…) 기본은 nor(정규분포)...

[python] 최대공약수와 최소공배수 클래스 만들기

최대공약수와 최소공베수 클래스 만들기 두 수의 최대공약수 두 수의 최소공배수 최대공약수와 최소공배수의 클래스 구현 두 수의 최대공약수 다음 함수로 두 수의 공약수를 결정할 수 있습니다. def commomFactor(x, y): re=[1] if x < y : smaller=x else: smaller=y for i in range(2, smaller+1): if (x % i ==0) and (y %i==0): re.append(i) return(re) commomFactor(54, 24) [1, 2, 3, 6] 두 수의 최대공약수는 사용자 정의함수 commomFactor()의 결과 중 최대수를 반환하는 방식으로는계산할 수 있습니다. 이러한 방식은 큰 수 일수록 반복문의 횟수가 증가합니다. 이러한 문제는 유클리드 호제법을 적용하여 개선할 수 있습니다. 즉, 두 수 a, b 로부터 다음 알고리즘에서 a%b=0이 될 때까지 반복하면 a가 최대공약수가 됩니다. a, b = b, a % b 예를들어 76, 24의 최대공약수의 계산과정은 다음과 같습니다. a, b=76, 24 a, b=b, a%b a, b (24, 4) a, b=b, a%b a, b (4, 0) 위 결과와 같이 최대공약수는 a%b=0인 경우의 a 값인 4입니다. 그러나 유클리드 호제법으로 3, 5에 대한 최대공약수는 1이 반환됩니다. a, b=3, 5 while True: a, b=b, a%b a, b if a%b == 0: break a=b a 1 그러므로 위 상황을 고려하여 유클리드호제법을 사용하는 함수는 다음과 같이 작성할 수 있습니다. def gcd(x, y): x1=[x, y] while(y): x, y=y, x%y if x ==1 : x=x1[...

[python] 일급 객체(first class)

일급(first class) 객체 일급 객체 는 일반적으로 모든 객체에서 사용과 수정이 가능한 객체로 다음과 같이 실행할 수 있습니다. 변수에 할당 저장 함수에 인수로 전달 함수의 반환값 수정할 수 있으며 객체에 할당 가능 파이썬에서 모든 데이터는 객체 또는 객체간의 관계로 표현됩니다. def hello(name): return f"{name}님 안녕하세요!" 위 함수 hello()의 실행결과는 다음과 같이 문자열 객체입니다. B=hello('A');B 'A님 안녕하세요!' type(B) str 다음 결과와 같이 힘수 hello 자체는 함수의 결과와는 다른 의미를 가집니다. 즉, hello는 모듈의 메인함수 hello(name)를 포함하고 있는 이름객체입니다. help(hello) Help on function hello in module __main__: hello(name) 위 결과의 __main__은 그 모듈의 시작점을 의미하는 내장속성(builtin attribute)로서 프로그램 실행시 내부적으로 이름객체를 호출하는 내장속성인 __name__과 함께 사용합니다. 즉, 다음 코드와 같이 사용되며 호출된 이름이 __main__일 경우 프로그램을 실행함을 의미합니다. if __name__="__main__" 즉, 이름 객체인 hello는 함수 hello()를 포함하는 것으로 다른 변수에 할당할 수 있습니다. 다음은 greet 변수에 hello를 할당하는 것으로 greet는 hello() 함수의 모든 내용을 포함합니다. 위 함수 hello는 return 문을 포함하는 함수이며 1급객체입니다. 그러므로 다음 코드와 같이 다른 변수인 greet에 할당할 수 있습니다. greet=hello greet("영희") '영희님 안녕하세요!' help(greet) Help on function hello...

[python] 함수(Function): 가변인수

함수 관련내용 함수(Function): 함수의 정의 전역변수와 지역변수 함수: 인수의 전달 가변인수 *인수와 **인수 객체의 언패킹(unpacking) 재귀함수(Recursive Function) Python의 함수는 1급(First Class)객체 1급 객체와 변수의 영역 클로저(Closure) 람다함수(Lambda Function) 주요한 내장함수들 데코레이터(Decorator, 장식자) 가변인수 *인수와 **인수 파이썬에서 ' Asterisk(*) ' 연산자는 곱셈 뿐만 아니라 지정된 아이템 외에 나머지를 할당하기 위해 사용하며 가변 연산자(*) 라고 합니다. a, b, *rest=range(9) a, b (0, 1) rest [2, 3, 4, 5, 6, 7, 8] *head, a,b=range(10) head, a, b ([0, 1, 2, 3, 4, 5, 6, 7], 8, 9) 다음 코드는 3개의 객체에 2개만이 할당됩니다. 그러므로 가변 연산자로 연결된 객체 *rest 는 받을 값이 없으므로 빈리스트(empty list) 가 됩니다. a, b, *rest=range(2) a, b, rest (0, 1, []) 식 1에서 나타낸 것과 같이 함수에 전달할 인수의 수가 고정되지 않은 경우 가변연산자(*)와 인수를 연결하여 사용할 수 있으며 가변 인수 라고 합니다. def 함수이름(*인수) (식 1) ⇒ 실행: 함수이름(인수값1, 인수값2, …) 1개 이상의 인수값들을 전달하기 위해 리스트, 튜플과 같은 콜렉션 형태를 사용할 수 있습니다. 가변인자 역시 같은 역할을 하며 인수전달 유형을 고정하지 않기 때문에 보다 유연한 적용이 가능합니다. 다음 사용자 정의한 함수 order() 에 전달하는 인수 poduct에 리스트 객체를 전달할 수 있습니다. 이 경우는...

[python] 함수: 인수의 전달

함수 관련내용 함수의 정의 전역변수와 지역변수 인수의 전달 가변인수 Python의 함수는 1급(First Class)객체 1급 객체와 변수의 영역 클로저(Closure) 람다함수(Lambda Function) 주요한 내장함수들 데코레이터(Decorator, 장식자) 인수의 전달 함수에 매개변수(인수)를 전달은 기본적으로 " 인수이름 = 값 "의 형식에 따르며 이 값은 인수의 초기값이 됩니다. 물론 함수 내에서 이 값은 수정될 수 있으며 초기값을 지정하지 않을 수 있습니다. 즉, 인수이름만 지정할 수 있습니다. 일반적으로 식 1의 규칙을 따릅니다. def 함수이름(인수1, 인수2, 인수3 = 값3, 인수4 = 값4) (식 1) ⇒ 함수 실행: 함수이름(값1, 값2, 인수3 = 값3, 인수4 = 값4) 이름과 함께 전달한 값은 그 인수의 초기값이 됩니다. 초기값이 지정된 인수는 그렇지 않은 인수 뒤에 위치합니다. 초기값이 지정되지 않은 인수는 순서를 지켜야됨 함수 실행시 초기값이 지정된 인수는 생략할 수 있음 초기값이 지정된 인수는 전달 순서에 무관 함수( 인수2, 인수1 , …) → 에러 발생 함수(인수1, 인수3=값3, 인수2 , …) → 에러 발생 함수(인수1,인수2, 인수4 = 값4, 인수3 = 값3) → 실행 함수(인수2=값2, 인수4 = 값4, 인수3 = 값3, 인수1=값1 ) → 실행 다음 함수 order() 는 세개의 인수를 요구합니다. def order(order, num=1, product="coffee"): print(f"주문번호: {order}, 테이블번호: {num}, 품목:{product}") 초기값 지정 없는 인수를 전달할 경우는 순서대로 입력하여야 합니다. order(2, 10, "spaghetti") ...

[python] 데코레이터(Decorator, 장식자)

장식자(Decorator) 함수는 일급 객체 이므로 다른 함수에 인수로 전달될 수 있습니다. 이 방식으로 인수로 전달된 함수의 결과는 더 자세한 정보를 첨가시키는 등의 수정을 일으킬 수 있습니다. 다음 함수 dol2won 은 달러를 원화로 전환하는 것으로 달러와 환율을 인수로 받습니다. 다음의 결과와 같이 결과는 단순히 숫자로 반화됩니다. def dol2won(dol, wpd): return dol*wpd dol2won(3, 1200) 3600 다음 deco() 는 중첩함수 를 포함하는 함수로 클로저(closure) 입니다. 이 함수의 인수는 다른 함수이며 중첩함수는 인수로 전달된 함수를 사용합니다. def deco(fn): def wrapper(*args, **kwargs): result=fn(*args, **kwargs) return f'{result} 원' return wrapper 그림 1은 함수 deco() 의 실행 순서를 나타낸 것입니다. 함수 deco() 실행과 동시에 중첩함수를 호출합니다. 이 함수의 인수는 내부에 정의되지 않으므로 외부에서 전달해야 합니다. 즉, 클로저 입니다. 실행된 중첩함수는 인수로 전달된 함수를 적용하여 결과를 반환합니다. 그림 1. 함수 deco()의 실행 순서. dwon=deco(dol2won) dwon(3, 1200) '3600 원' 위 결과는 함수 dol2won() 함수의 결과와 같지만 단위를 표시하는 것으로 수정되었습니다. 파이썬에서는 다음과 같이 코딩하여 같은 결과를 반환할 수 있습니다. @deco def dol2won(dol, wpd): return dol*wpd dol2won(1000, 1200) '1200000 원' 위 코딩은 함수 위에 @함수 를 첨가합니다. 이것은 함수가 @함수 의 인수로 전달된다는 것을 의미합니다. @ 과 함께 첨가된 함수...