SciPy 튜토리얼 : Python SciPy 란 무엇이며 어떻게 사용합니까?



SciPy는 과학 및 수학 문제를 해결하는 데 사용되는 Python 라이브러리입니다. NumPy 대 SciPy. 예제와 함께 기본, 특수, 통합, 최적화 등.

수학은 매우 중요하지만 동시에 복잡하고 시간이 많이 걸리는 수많은 개념을 다룹니다. 하나, 이 문제를 해결하는 본격적인 SciPy 라이브러리를 제공합니다. 이 SciPy 튜토리얼에서는 몇 가지 함수 및 예제와 함께이 라이브러리를 사용하는 방법을 배우게됩니다.

계속 진행하기 전에이 기사에서 논의 된 모든 주제를 살펴보십시오.





그럼 시작하겠습니다. :)

SciPy 란 무엇입니까?

SciPy는 과학 및 수학 문제를 해결하는 데 사용되는 오픈 소스 Python 라이브러리입니다. 그것은 확장을 통해 사용자가 다양한 고급 명령으로 데이터를 조작하고 시각화 할 수 있습니다. 앞서 언급했듯이 SciPy는 NumPy를 기반으로하므로 SciPy를 가져 오면 NumPy를 가져올 필요가 없습니다.



NumPy 대 SciPy

NumPy와 SciPy는 모두 사용되는 수학적 및 수치 분석에 사용됩니다. NumPy는 배열 데이터와 정렬, 인덱싱 등과 같은 기본 작업을 포함하는 반면 SciPy는 모든 숫자 코드로 구성됩니다. NumPy는 많은 것을 제공하지만 선형 대수, 푸리에 변환 등을 해결하는 데 도움이 될 수있는 SciPy는 실제로 이러한 함수의 모든 기능을 다른 많은 기능과 함께 포함하는 라이브러리입니다. 그러나 Python을 사용하여 과학적 분석을 수행하는 경우 SciPy가 NumPy를 기반으로 빌드되므로 NumPy와 SciPy를 모두 설치해야합니다.

SciPy의 하위 패키지 :

SciPy에는 다음 표에 표시된 다양한 과학 계산을위한 여러 하위 패키지가 있습니다.

이름기술
클러스터클러스터링 알고리즘
상수물리 및 수학 상수
fftpack고속 푸리에 변환 루틴
통합적분 및 상미 분 방정식 솔버
보간하다스플라인 보간 및 스무딩
나는입력과 출력
리나 그선형 대수
나는 난다N 차원 이미지 처리
odr직교 거리 회귀
최적화최적화 및 근 찾기 루틴
신호신호 처리
부족한희소 행렬 및 관련 루틴
공간공간 데이터 구조 및 알고리즘
특별한특수 기능
통계통계 분포 및 기능

그러나 자세한 설명을 보려면 공식 문서 .



이러한 패키지는 사용하기 전에 독점적으로 가져와야합니다. 예를 들면 :

scipy 가져 오기 클러스터에서

이러한 각 기능을 자세히 살펴보기 전에 먼저 NumPy와 SciPy에서 공통적 인 기능을 살펴 보겠습니다.

기본 기능 :

NumPy와의 상호 작용 :

SciPy는 NumPy를 기반으로하므로 NumPy 함수 자체를 사용하여 배열을 처리 할 수 ​​있습니다. 이러한 함수에 대해 자세히 알아 보려면 help (), info () 또는 source () 함수를 사용하면됩니다.

도움():

모든 기능에 대한 정보를 얻으려면 다음을 사용할 수 있습니다. 도움() 함수. 이 기능을 사용할 수있는 두 가지 방법이 있습니다.

  • 매개 변수없이
  • 매개 변수 사용

다음은 위의 두 가지 방법을 모두 보여주는 예입니다.

from scipy import cluster help (cluster) #with parameter help () #without parameter

위의 코드를 실행하면 첫 번째 help ()는 클러스터 하위 모듈. 두 번째 help ()는 사용자가 정보를 찾고자하는 모듈, 키워드 등의 이름을 입력하도록 요청합니다. 이 기능의 실행을 중지하려면 단순히 'quit'를 입력하고 Enter 키를 누르십시오.

정보 () :

이 함수는 원하는 정보를 반환합니다. , 모듈 등

scipy.info (클러스터)

출처():

소스 코드는 작성된 객체에 대해서만 반환됩니다. . 이 함수는 메소드 나 객체가 C와 같은 다른 언어로 작성된 경우 유용한 정보를 반환하지 않습니다. 그러나이 함수를 사용하려는 경우 다음과 같이 할 수 있습니다.

scipy.source (클러스터)

특수 기능 :

SciPy는 타원과 같은 수학적 물리학에서 사용되는 여러 특수 함수를 제공합니다., 편의 기능, 감마, 베타 등모든 함수를 찾으려면 앞에서 설명한대로 help () 함수를 사용할 수 있습니다.

지수 및 삼각 함수 :

SciPy의 특수 함수 패키지는 지수를 찾고 삼각 문제를 풀 수있는 여러 함수를 제공합니다.

다음 예를 고려하십시오.

예:

from scipy import special a = special.exp10 (3) print (a) b = special.exp2 (3) print (b) c = special.sindg (90) print (c) d = special.cosdg (45) print ( 디)

산출:

1000.0
8.0
1.0
0.7071067811865475

SciPy의 특수 기능 패키지에는 직접 사용해 볼 수있는 다른 많은 기능이 있습니다.

통합 기능 :

SciPy는 적분을 풀기위한 여러 함수를 제공합니다. 일반 미분 적분기에서 사다리꼴 규칙을 사용하여 적분을 계산하는 것에 이르기까지 SciPy는 모든 유형의 적분 문제를 해결하는 함수의 창고입니다.

일반 통합 :

SiPy는 쿼드 하나의 변수가있는 함수의 적분을 계산합니다. 한계는 ± 및 무한(± inf)는 무한 한계를 나타냅니다. quad () 함수의 구문은 다음과 같습니다.

통사론:

quad (func, a, b, args = (), full_output = 0, epsabs = 1.49e-08, epsrel = 1.49e-08, limit = 50, points = None, weight = None, wvar = None, wopts = None , maxp1 = 50, limlst = 50)

자바 브레이크 아웃

여기서 함수는 한계 a와 b 사이에 통합됩니다 (무한도 가능).

예:

from scipy import special from scipy import integration a = lambda x : special.exp10 (x) b = scipy.integrate.quad (a, 0, 1) print (b)

위의 예에서 함수‘a’는 제한 0, 1 사이에서 평가됩니다.이 코드가 실행되면 다음 출력이 표시됩니다.

산출:

(3.9086503371292665, 4.3394735994897923e-14)

이중 적분 기능 :

SciPy는 dblquad 이중 적분을 계산하는 데 사용할 수 있습니다. 많은 사람들이 알고 있듯이 이중 적분은 두 개의 실제 변수로 구성됩니다. dblquad () 함수는 한계와 함수를 정의하는 4 개의 다른 변수와 함께 통합 할 함수를 매개 변수로 취합니다. dydx.

예:

from scipy import 통합 a = 람다 y, x : x * y ** 2 b = 람다 x : 1 c = 람다 x : -1 integrated.dblquad (a, 0, 2, b, c)

산출:

-1.3333333333333335, 1.4802973661668755e-14)

SciPy는 삼중 적분, n 적분, Romberg 적분 등을 평가하기위한 다양한 기타 기능을 제공합니다. 필요한 기능에 대한 모든 세부 사항을 찾으려면 도움말 기능을 사용하십시오.

원자 파이썬 실행 방법

최적화 기능 :

scipy.optimize는 도움말 기능을 사용하여 볼 수있는 일반적으로 사용되는 여러 최적화 알고리즘을 제공합니다.

기본적으로 다음으로 구성됩니다.

  • 다변량 스칼라 함수의 제한 및 제한 최소화, 즉 최소화 (예 : BFGS, Newton Conjugate Gradient, Nelder_mead simplex 등)
  • 전역 최적화 루틴 (예 : Different_evolution, dual_annealing 등)
  • 최소 제곱 최소화 및 곡선 맞춤 (예 : 최소 제곱, 곡선 맞춤 등)
  • 스칼라 일 변량 함수 최소화 기 및 근 찾기 (예 : minimal_scalar 및 root_scalar)
  • 하이브리드 Powell, Levenberg-Marquardt와 같은 알고리즘을 사용하는 다변량 방정식 시스템 솔버.

Rosenbrook 기능 :

Rosenbrook 함수 ( rosen )는 그래디언트 기반 최적화 알고리즘에 사용되는 테스트 문제입니다. SciPy에서 다음과 같이 정의됩니다.

rosen-Scipy 튜토리얼 -edureka예:

import numpy를 scipy.optimize에서 np로 가져 오기 import rosen a = 1.2 * np.arange (5) rosen (a)

산출: 7371.0399999999945

Nelder-Mead :

그만큼Nelder–Mead 방법은 다차원 공간에서 함수의 최소 / 최대를 찾는 데 자주 사용되는 수치 방법입니다. 다음 예제에서는 최소화 방법이 Nelder-Mead 알고리즘과 함께 사용됩니다.

예:

from scipy import optimize a = [2.4, 1.7, 3.1, 2.9, 0.2] b = optimize.minimize (optimize.rosen, a, method = 'Nelder-Mead') b.x

산출: 배열 ([0.96570182, 0.93255069, 0.86939478, 0.75497872, 0.56793357])

보간 기능 :

수치 분석 분야에서 보간은 알려진 데이터 포인트 세트 내에서 새로운 데이터 포인트를 구성하는 것을 의미합니다. SciPy 라이브러리는 다음으로 구성된 scipy.interpolate라는 하위 패키지로 구성됩니다.스플라인 함수 및 클래스, 1 차원 및 다차원 (일 변량 및 다변량) 보간 클래스 등

일 변량 보간 :

일 변량 보간은 기본적으로 곡선 맞춤 영역입니다.일련의 2 차원 데이터 포인트에 정확히 맞는 곡선을 찾습니다. SciPy는 interp1d 일 변량 보간을 생성하는 데 사용할 수있는 함수입니다.

예:

import matplotlib.pyplot as plt from scipy import interpolate x = np.arange (5, 20) y = np.exp (x / 3.0) f = interpolate.interp1d (x, y) x1 = np.arange (6, 12) y1 = f (x1) #`interp1d`가 반환하는 보간 함수 사용 plt.plot (x, y, 'o', x1, y1, '-') plt.show ()

산출:

다변량 보간 :

다변량 보간(공간보간)는 종류입니다.보간둘 이상의 변수로 구성된 함수. 다음 예는 interp2d 함수.
interp2d (x, y, z) 함수를 사용하여 2 차원 그리드에서 보간하면 기본적으로 x, y, z 배열을 사용하여 일부 함수를 근사합니다. f : 'z = f (x, y)' 호출 방법이 사용하는 함수를 반환합니다. 스플라인 보간 새로운 포인트의 가치를 찾을 수 있습니다.
예:

from scipy import interpolate import matplotlib.pyplot as plt x = np.arange (0,10) y = np.arange (10,25) x1, y1 = np.meshgrid (x, y) z = np.tan (xx + yy) f = interpolate.interp2d (x, y, z, 종류 = 'cubic') x2 = np.arange (2,8) y2 = np.arange (15,20) z2 = f (xnew, ynew) plt. plot (x, z [0, :], 'ro-', x2, z2 [0, :], '-') plt.show ()

산출:

푸리에 변환 함수 :

푸리에 분석은 함수를 주기적 구성 요소의 합으로 표현하고 해당 구성 요소에서 신호를 복구하는 방법입니다. 그만큼 fft 함수를 사용하여실수 또는 복잡한 시퀀스의 이산 푸리에 변환.

예:

from scipy.fftpack import fft, ifft x = np.array ([0,1,2,3]) y = fft (x) print (y)

산출: [6. + 0.j -2. + 2.j -2. + 0.j -2.-2.j]

마찬가지로 다음을 사용하여 이것의 역을 찾을 수 있습니다. ifft 다음과 같이 기능 :

예:

rom scipy.fftpack import fft, ifft x = np.array ([0,1,2,3]) y = ifft (x) print (y)

산출: [1.5 + 0.j -0.5-0.5j -0.5 + 0.j -0.5 + 0.5j]

신호 처리 기능 :

신호 처리는사운드, 이미지 등과 같은 신호를 분석, 수정 및 합성합니다. SciPy는 1 차원 및 2 차원 데이터를 설계, 필터링 및 보간 할 수있는 몇 가지 기능을 제공합니다.

필터링 :

신호를 필터링하면 기본적으로 신호에서 원하지 않는 구성 요소를 제거 할 수 있습니다. 정렬 된 필터링을 수행하려면 다음을 사용할 수 있습니다. order_filter 함수. 이 함수는 기본적으로 배열에서 정렬 된 필터링을 수행합니다. 이 함수의 구문은 다음과 같습니다.

통사론:
order_filter (a, 도메인, 순위)

a = N 차원 입력 배열

도메인 = 'a'와 동일한 수의 차원을 갖는 마스크 배열

rank = 정렬 된 후 목록에서 요소를 선택하는 음이 아닌 숫자 (0은 가장 작은 다음에 1…)

예:

scipy 가져 오기 신호 x = np.arange (35) .reshape (7, 5) domain = np.identity (3) print (x, end = 'nn') print (signal.order_filter (x, domain, 1))

산출:

[[0 1 2 3 4]
[5678 9]
[10 11 12 1314]
[15 16 17 18 19]
[20 21 22 23 24]
[25 26 27 28 29]
[30 31 32 33 34]]

[[0. 1. 2. 3. 0.]
[5. 6. 7. 8. 3.]
[10. 11. 12. 13. 8.]
[열 다섯. 16. 17. 18. 13.]
[스물. 21. 22. 23. 18.]
[25. 26. 27. 28. 23.]
[0. 25. 26. 27. 28.]]

파형 :

scipy.signal 서브 패키지는 파형을 생성하는 데 사용할 수있는 다양한 기능으로 구성됩니다. 이러한 기능 중 하나는 짹짹 . 이 기능은 frequency-swept 코사인 생성기 및 구문은 다음과 같습니다.

통사론:
처프 (t, f0, t1, f1, 방법 = '선형', phi = 0, vertex_zero = True)

어디,

예:

from scipy.signal import chirp, spectrogram import matplotlib.pyplot as plt t = np.linspace (6, 10, 500) w = chirp (t, f0 = 4, f1 = 2, t1 = 5, method = 'linear') plt.plot (t, w) plt.title ( 'Linear Chirp') plt.xlabel ( 'time in sec)') plt.show ()

산출:

선형 대수 :

선형 대수는 벡터 공간과 행렬을 사용하여 선형 방정식과 그 표현을 다룹니다. SciPy는ATLAS LAPACK 및 BLAS 라이브러리 및선형 대수와 관련된 문제를 매우 빠르게 해결합니다. numpy.linalg의 모든 기능 외에도 scipy.linalg는 기타 여러 고급 기능을 제공합니다. 또한 numpy.linalg가 함께 사용되지 않으면ATLAS LAPACK 및 BLAS 지원, scipy.linalg는 numpy.linalg보다 빠릅니다.

행렬의 역 찾기 :

수학적으로 행렬 A의 역매트릭스입니다그런AB = 나어디나는다음과 같이 표시된 주 대각선 아래로 구성된 단위 행렬입니다.B = A-하나. SciPy에서이 역은 다음을 사용하여 얻을 수 있습니다. linalg.inv 방법.

예:

import numpy as np from scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.inv (A) print (B)

산출:

[[-0.6 0.4]
[0.8 -0.2]]

결정 인자 찾기 :

행렬의 계수에서 산술적으로 파생 된 값을 정사각형 행렬의 행렬식이라고합니다. SciPy에서는 함수를 사용하여 수행 할 수 있습니다. 그만큼 다음 구문이 있습니다.

통사론:
det (a, overwrite_a = False, check_finite = True)
어디,

a : (M, M) 정사각형 행렬입니다.

클래스와 인터페이스의 차이점은 무엇입니까

overwrite_a (bool, optional) : a의 데이터 덮어 쓰기 허용

check_finite (bool, optional) : 입력 행렬이 유한 숫자로만 구성되어 있는지 확인합니다.

예:

import numpy as np from scipy import linalg A = np.array ([[1,2], [4,3]]) B = linalg.det (A) print (B)

산출: -5.0

희소 고유 값 :

고유 값은 선형 방정식과 연결된 특정 스칼라 집합입니다. ARPACK은 고유 값 (고유 벡터)을 매우 빠르게 찾을 수 있도록합니다. ARPACK의 전체 기능은scipy.sparse.linalg.eigs 및 scipy.sparse.linalg.eigsh 인 두 개의 고급 인터페이스. eigs. eigs 인터페이스를 사용하면 실수 또는 복소 비대칭 정사각형 행렬의 고유 값을 찾을 수있는 반면 eigsh 인터페이스에는 실수 대칭 또는 복소 에르 미트 행렬에 대한 인터페이스가 포함됩니다.

그만큼 울다 함수는 복잡한 Hermitian 또는 실수 대칭 행렬에 대한 일반 고유 값 문제를 해결합니다.

예:

from scipy.linalg import eigh import numpy as np A = np.array ([[1, 2, 3, 4], [4, 3, 2, 1], [1, 4, 6, 3], [2, 3, 2, 5]]) a, b = eigh (A) print ( '선택된 고유 값 :', a) print ( '복합 ndarray :', b)

산출:

선택한 고유 값 : [-2.53382695 1.66735639 3.69488657 12.17158399]
복잡한 ndarray : [[0.69205614 0.5829305 0.25682823 -0.33954321]
[-0.68277875 0.46838936 0.03700454 -0.5595134]
[0.23275694 -0.29164622 -0.72710245 -0.57627139]
[0.02637572 -0.59644441 0.63560361 -0.48945525]]

공간 데이터 구조 및 알고리즘 :

공간 데이터는 기본적으로 선, 점, 표면 등으로 구성된 객체로 구성됩니다. SciPy의 scipy.spatial 패키지는 다음을 계산할 수 있습니다.Qhull 라이브러리를 사용한 보로 노이 다이어그램, 삼각 측량 등. 또한 가장 가까운 인접 지점 쿼리에 대한 KDTree 구현으로 구성됩니다.

들로네 삼각 분할 :

수학적으로 평면의 이산 점 집합에 대한 들로네 삼각 분할은 주어진 점 집합에 어떤 점도없는 삼각 분할입니다.삼각형의 circumcircle 내부.

예:

import matplotlib.pyplot as plt from scipy.spatial import Delaunay points = np.array ([[0, 1], [1, 1], [1, 0], [0, 0]]) a = Delaunay (points) #Delaunay object print (a) print (a.simplices) plt.triplot (points [:, 0], points [:, 1], a.simplices) plt.plot (points [:, 1], points [:, 0], 'o') plt.show ()

산출:

다차원 이미지 처리 기능 :

이미지 처리는 기본적으로 이미지에 대한 작업을 수행하여 정보를 검색하거나 원본에서 향상된 이미지를 가져 오는 작업을 처리합니다. scipy.ndimage 패키지는 여러임의의 차원 배열과 함께 작동하도록 설계된 이미지 처리 및 분석 기능.

컨볼 루션 및 상관 관계 :

SciPy는 이미지의 상관 관계 및 컨볼 루션을 허용하는 여러 기능을 제공합니다.

  • 함수 correlate1d 주어진 축을 따라 1 차원 상관 관계를 계산하는 데 사용할 수 있습니다.
  • 함수 상관시키다 지정된 커널과 주어진 배열의 다차원 상관을 허용합니다.
  • 함수 convolve1d 주어진 축을 따라 1 차원 컨볼 루션을 계산하는 데 사용할 수 있습니다.
  • 함수 말다 지정된 커널을 사용하여 주어진 배열의 다차원 컨볼 루션을 허용합니다.

예:

scipy.ndimage에서 np로 numpy 가져 오기 import correlate1d correlate1d ([3,5,1,7,2,6,9,4], weights = [1,2])

산출: 배열 ([9, 13, 7, 15, 11, 14, 24, 17])

IO 파일 :

scipy.io 패키지는 MATLAB 파일, IDL 파일, Matrix Market 파일 등과 같은 다양한 형식의 파일을 관리하는 데 도움이되는 여러 함수를 제공합니다.

이 패키지를 사용하려면 다음과 같이 가져와야합니다.

scipy.io를 sio로 가져 오기

하위 패키지에 대한 자세한 내용은 공식 문서를 참조하십시오. 파일 IO .

이것으로이 SciPy 튜토리얼의 끝으로 이동합니다. 모든 것을 명확하게 이해 하셨기를 바랍니다. 가능한 한 많이 연습하십시오 .

질문이 있으십니까? 이 'SciPy Tutorial'블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 연락 드리겠습니다.

다양한 응용 프로그램과 함께 Python에 대한 심층적 인 지식을 얻으려면 라이브에 등록 할 수 있습니다. 연중 무휴 지원 및 평생 액세스.