일반적인 numpy 사용법에 대한 자세한 소개

高洛峰
풀어 주다: 2017-03-20 11:58:43
원래의
1255명이 탐색했습니다.

numpy 소개

numpy의 존재 덕분에 python은 matlab 못지않은 강력한 행렬 계산 기능을 갖게 되었습니다.
공식 문서(https://docs.scipy.org/doc/numpy-dev/user/quickstart.html)

다양한 사용법 소개

우선 numpy에서는 데이터 유형 , ndarray 유형은 표준 라이브러리의 array.array와 다릅니다.

ndarray의 일부 속성

ndarray.ndim
파이썬 세계에서는 배열의 축 수(차원)입니다. 차원의 수를 순위라고 합니다.
ndarray.shape
배열의 차원 이는 각 차원. n개의 행과 m개의 열이 있는 행렬의 경우 모양은 (n,m)입니다. 따라서 모양 튜플의 길이는 순위 또는 차원 수 ndim입니다.
ndarray.size배열 요소의 총 개수입니다. 이는 모양 요소의 곱과 같습니다.

ndarray.dtype배열의 요소 유형을 설명하는 객체입니다. 표준 Python 유형을 사용하여 dtype을 생성하거나 지정할 수 있습니다. 또한 NumPy는 numpy.int32, numpy.int16 및 numpy.
float64를 제공합니다.
ndarray.itemsize배열의 각 요소 크기(바이트)입니다. 예를 들어 float64 유형의 요소 배열에는 항목 크기가 8(=64/8)이고
그 동안 다음 중 하나가 있습니다. complex32 유형은 항목 크기 4(=32/8)입니다. ndarray.dtype.itemsize.
ndarray.data일반적으로 배열의 실제 요소를 포함하는 버퍼입니다. 인덱싱 기능을 사용하여 배열의 요소에 액세스하므로 이 속성을 사용할 필요가 없습니다. 특정 규칙이 있는 행렬

>>> import numpy as np>>> a = np.array([2,3,4])>>> a
array([2, 3, 4])>>> a.dtype
dtype('int64')>>> b = np.array([1.2, 3.5, 5.1])>>> b.dtype
dtype('float64')
로그인 후 복사
몇 가지 기본 연산

덧셈, 뺄셈, 곱셈 및 나눗셈 삼각법

함수논리 연산

>>> b = np.array([(1.5,2,3), (4,5,6)])>>> b
array([[ 1.5,  2. ,  3. ],
       [ 4. ,  5. ,  6. ]])
로그인 후 복사
행렬 연산

있음 matlab에서는 .*,./ 등입니다

하지만 numpy에서는 +, -, ×,/를 사용하면 각 점 사이의 덧셈, 뺄셈, 곱셈, 나눗셈을 수행하는 것이 우선입니다

두 개의 행렬(정사각형) 행렬)은 요소 간 연산과 행렬 연산을 모두 수행할 수 있으며, 요소 간 연산이 먼저 수행됩니다

>>> c = np.array( [ [1,2], [3,4] ], dtype=complex )>>> c
array([[ 1.+0.j,  2.+0.j],
       [ 3.+0.j,  4.+0.j]])
로그인 후 복사

행렬 연산을 수행해야 하는 경우 일반적으로 행렬 곱셈입니다

>>> np.zeros( (3,4) )
array([[ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.]])
>>> np.ones( (2,3,4), dtype=np.int16 )                # dtype can also be specified
array([[[ 1, 1, 1, 1],
        [ 1, 1, 1, 1],
        [ 1, 1, 1, 1]],
       [[ 1, 1, 1, 1],
        [ 1, 1, 1, 1],
        [ 1, 1, 1, 1]]], dtype=int16)
>>> np.empty( (2,3) )                                 # uninitialized, output may vary
array([[  3.73603959e-262,   6.02658058e-154,   6.55490914e-260],
       [  5.30498948e-313,   3.14673309e-307,   1.00000000e+000]])
로그인 후 복사

일부 일반적으로 사용됨

전역 함수

행렬 인덱스 슬라이스 순회

>>> a = np.array( [20,30,40,50] )
>>> b = np.arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*np.sin(a)
array([ 9.12945251, -9.88031624,  7.4511316 , -2.62374854])
>>> a<35
array([ True, True, False, False], dtype=bool)
로그인 후 복사

행렬 순회

>>> import numpy as np>>> A = np.arange(10,20)>>> B = np.arange(20,30)>>> A + B
array([30, 32, 34, 36, 38, 40, 42, 44, 46, 48])>>> A * B
array([200, 231, 264, 299, 336, 375, 416, 459, 504, 551])>>> A / B
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])>>> B / A
array([2, 1, 1, 1, 1, 1, 1, 1, 1, 1])
로그인 후 복사

행렬의 특수 연산

모양 변경 행렬의--reshape

>>> A = np.array([1,1,1,1])
>>> B = np.array([2,2,2,2])
>>> A.reshape(2,2)
array([[1, 1],
       [1, 1]])
>>> B.reshape(2,2)
array([[2, 2],
       [2, 2]])
>>> A * B
array([2, 2, 2, 2])
>>> np.dot(A,B)
8
>>> A.dot(B)
8
로그인 후 복사

크기 조정과 모양 변경의 차이

크기 조정은 원래 행렬을 변경하지만 모양 변경은

>>> B = np.arange(3)
>>> B
array([0, 1, 2])
>>> np.exp(B)
array([ 1.        ,  2.71828183,  7.3890561 ])
>>> np.sqrt(B)
array([ 0.        ,  1.        ,  1.41421356])
>>> C = np.array([2., -1., 4.])
>>> np.add(B, C)
array([ 2.,  0.,  6.])
로그인 후 복사

행렬 병합아아아아

위 내용은 일반적인 numpy 사용법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿