백엔드 개발 파이썬 튜토리얼 Python 과학 컴퓨팅 - Numpy로 빠른 시작

Python 과학 컴퓨팅 - Numpy로 빠른 시작

Oct 17, 2016 pm 01:41 PM

Numpy란 무엇인가요?

Numpy는 행렬 연산 기능을 제공하는 Python용 과학 컴퓨팅 라이브러리로 일반적으로 Scipy 및 matplotlib와 함께 사용됩니다. 이는 큰 행렬을 저장하고 처리하는 데 사용할 수 있으며 Python 자체의 중첩 목록 구조(행렬을 나타내는 데에도 사용할 수 있음)보다 훨씬 더 효율적입니다.


NumPy(Numeric Python)는 행렬 데이터 유형, 벡터 처리 및 정교한 연산 라이브러리와 같은 다양한 고급 수치 프로그래밍 도구를 제공합니다. 엄격한 숫자 처리를 위해 제작되었습니다. 이는 로렌스 리버모어(Lawrence Livermore)와 같은 핵심 과학 컴퓨팅 조직뿐만 아니라 많은 대규모 금융 회사에서 주로 사용되며 NASA는 원래 C++, Fortran 또는 Matlab을 사용하여 수행되었던 일부 작업을 처리하는 데 이를 사용합니다.


다차원 배열


다차원 배열 유형: numpy.ndarray


numpy.array 메소드


를 사용하여 목록 또는 튜플 변수를 매개변수로 사용하여 1차원 배열을 생성합니다.

>>> print(np.array([1,2,3,4]))
[1 2 3 4]
>>> print(np.array((1.2,2,3,4)))
[ 1.2  2.   3.   4. ]
>>> print type(np.array((1.2,2,3,4)))
<type &#39;numpy.ndarray&#39;>
로그인 후 복사


목록 또는 튜플 변수를 요소로 사용하여 2차원 배열을 생성합니다.

>>> print(np.array([[1,2],[3,4]]))
[[1 2]
 [3 4]]
로그인 후 복사


데이터 유형 지정

예: numpy.int32, numpy.int16, numpy.float64 등:

>>> print np.array((1.2,2,3,4), dtype=np.int32)
[1 2 3 4]
로그인 후 복사

numpy.arange 메서드 사용

>>> print(np.arange(15))
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
>>> print type(np.arange(15))
<type &#39;numpy.ndarray&#39;>
>>> print np.arange(15).reshape(3,5)
[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]
>>> print type(np.arange(15).reshape(3,5))
<type &#39;numpy.ndarray&#39;>
로그인 후 복사

numpy.linspace 메서드 사용

예를 들어 9를 생성하려면 1부터 3까지의 숫자:

>>> print(np.linspace(1,3,10))
[ 1.          1.22222222  1.44444444  1.66666667  1.88888889  2.11111111
  2.33333333  2.55555556  2.77777778  3.        ]
로그인 후 복사

특정 행렬 구성

numpy.zeros, numpy.ones, numpy.eye 사용

특정 행렬 구성

>>> print(np.zeros((3,4)))
[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]
>>> print(np.ones((4,3)))
[[ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 1.  1.  1.]]
>>> print(np.eye(4))
[[ 1.  0.  0.  0.]
 [ 0.  1.  0.  0.]
 [ 0.  0.  1.  0.]
 [ 0.  0.  0.  1.]]
로그인 후 복사

3차원 배열 만들기:

>>> print(np.ones((3,3,3)))
[[[ 1.  1.  1.]
  [ 1.  1.  1.]
  [ 1.  1.  1.]]
 [[ 1.  1.  1.]
  [ 1.  1.  1.]
  [ 1.  1.  1.]]
 [[ 1.  1.  1.]
  [ 1.  1.  1.]
  [ 1.  1.  1.]]]
로그인 후 복사

배열 속성 가져오기

>>> a = np.zeros((2,3,2))
>>> print(a.ndim)   #数组的维数
3
>>> print(a.shape)  #数组每一维的大小
(2, 3, 2)
>>> print(a.size)   #数组的元素数
12
>>> print(a.dtype)  #元素类型
float64
>>> print(a.itemsize)  #每个元素所占的字节数
8
로그인 후 복사

배열 인덱싱, 슬라이싱, 할당

>>>a = np.array( [[2,3,4],[5,6,7]] )
>>> print(a)
[[2 3 4]
 [5 6 7]]
>>> print(a[1,2]) #index从0开始
7
>>> print a[1,:]
[5 6 7]
>>> print(a[1,1:2])
[6]
>>> a[1,:] = [8,9,10] #直接赋值
>>> print(a)
[[ 2  3  4]
 [ 8  9 10]]
로그인 후 복사

요소를 조작하는 데 for 사용

>>> for x in np.linspace(1,3,3):
...     print(x)
...
1.0
2.0
3.0
로그인 후 복사

기본 배열 연산

먼저 배열 a와 b를 구성합니다.

>>> a = np.ones((2,2))
>>> b = np.eye(2)
>>> print(a)
[[ 1.  1.]
 [ 1.  1.]]
>>> print(b)
[[ 1.  0.]
 [ 0.  1.]]
로그인 후 복사

배열의 덧셈, 뺄셈, 곱셈, 나눗셈

>>> print(a > 2)
[[False False]
 [False False]]
>>> print(a+b)
[[ 2.  1.]
 [ 1.  2.]]
>>> print(a-b)
[[ 0.  1.]
 [ 1.  0.]]
>>> print(b*2)
[[ 2.  0.]
 [ 0.  2.]]
>>> print((a*2)*(b*2))
[[ 4.  0.]
 [ 0.  4.]]
>>> print(b/(a*2))
[[ 0.5  0. ]
 [ 0.   0.5]]
>>> print((b*2)**4)
[[ 16.  0]
 [ 0  16.]]
로그인 후 복사

에 나오는 방법을 사용하세요. 배열 객체

>>> a.sum() #a的元素个数
4.0
>>> a.sum(axis=0)   #计算每一列(二维数组中类似于矩阵的列)的和
array([ 2.,  2.])
>>> a.min()
1.0
>>> a.max()
1.0
使用numpy下的方法
>>> np.sin(a)
array([[ 0.84147098,  0.84147098],
       [ 0.84147098,  0.84147098]])
>>> np.max(a)
1.0
>>> np.floor(a)
array([[ 1.,  1.],
       [ 1.,  1.]])
>>> np.exp(a)
array([[ 2.71828183,  2.71828183],
       [ 2.71828183,  2.71828183]])
>>> np.dot(a,a)   ##矩阵乘法
array([[ 2.,  2.],
       [ 2.,  2.]])
로그인 후 복사

배열 병합

numpy에서 vstack 및 hstack 함수 사용:

>>> a = np.ones((2,2))
>>> b = np.eye(2)
>>> print(np.vstack((a,b)))
#顾名思义 v--vertical  垂直
[[ 1.  1.]
 [ 1.  1.]
 [ 1.  0.]
 [ 0.  1.]]
>>> print(np.hstack((a,b)))
#顾名思义 h--horizonal 水平
[[ 1.  1.  1.  0.]
 [ 1.  1.  0.  1.]]
로그인 후 복사

이 두 함수가 얕은 함수와 관련되어 있는지 확인하세요. 이 문제를 복사하세요.

>>> c = np.hstack((a,b))
>>> print c
[[ 1.  1.  1.  0.]
 [ 1.  1.  0.  1.]]
>>> a[1,1] = 5
>>> b[1,1] = 5
>>> print c
[[ 1.  1.  1.  0.]
 [ 1.  1.  0.  1.]]
로그인 후 복사

a와 b의 요소 변경은 c에 영향을 미치지 않습니다.


깊은 복사 배열

배열 객체에는 얕은 복사와 깊은 복사 방법이 있지만 일반적으로 깊은 복사가 더 많이 사용됩니다.

>>> a = np.ones((2,2))
>>> b = a
>>> print(b is a)
True
>>> c = a.copy()  #深拷贝
>>> c is a
False
로그인 후 복사

기본 행렬 연산

전치:

>>> a = np.array([[1,0],[2,3]])
>>> print(a)
[[1 0]
 [2 3]]
>>> print(a.transpose())
[[1 2]
 [0 3]]
로그인 후 복사

numpy.linalg 행렬 연산에 대한 메서드

>>> import numpy.linalg as nplg1
로그인 후 복사

고유값 및 고유벡터:

>>> print nplg.eig(a)
(array([ 3.,  1.]), array([[ 0.        ,  0.70710678],
       [ 1.        , -0.70710678]]))
로그인 후 복사

행렬 객체

numpy 모듈의 행렬 객체는 numpy.matrix이며, 행렬 데이터 처리, 행렬 계산 및 기본 통계 함수, 전치, 가역성 등의 처리를 포함합니다. 복소수는 모두 행렬 객체에 있습니다.


class numpy.matrix(data,dtype,copy):


데이터가 ndarray인 행렬을 반환합니다. 개체 또는 문자 형식입니다.


dtype: 데이터 유형입니다.


copy: bool 유형입니다.

>>> a = np.matrix(&#39;1 2 7; 3 4 8; 5 6 9&#39;)
>>> a             #矩阵的换行必须是用分号(;)隔开,内部数据必须为字符串形式(‘ ’),矩
matrix([[1, 2, 7],       #阵的元素之间必须以空格隔开。
[3, 4, 8],
[5, 6, 9]])
>>> b=np.array([[1,5],[3,2]])
>>> x=np.matrix(b)   #矩阵中的data可以为数组对象。
>>> x
matrix([[1, 5],
[3, 2]])
로그인 후 복사

행렬 객체의 속성

matrix.T transpose

: 행렬의 전치 행렬을 반환합니다


matrix.H hermitian (conjugate) transpose

: 복소 행렬의 켤레 요소 행렬을 반환합니다.


matrix.I inverse

: 행렬의 역행렬을 반환합니다


matrix.A 기본 배열

: 행렬의 배열은


행렬 객체의 방법


all([axis, out])을 기반으로 합니다. : 주어진 축을 따라 모든 행렬 객체를 결정합니다. 요소가 true인지 여부(0이 아닌 것은 true를 의미함)


any([axis, out]): 행렬 요소가 true인지 여부를 결정합니다. 요소가 참인 경우 참인 동안은 주어진 축 방향을 따라 참입니다.


argmax([axis, out]) : 주어진 축 방향을 따라 가장 큰 요소의 인덱스(가장 큰 요소의 위치)를 반환합니다.


argmin([axis, out]): 주어진 축 방향을 따라 가장 작은 요소의 인덱스(가장 작은 요소의 위치)를 반환합니다.


argsort( [axis, kind, order]): 정렬된 인덱스 행렬을 반환합니다


astype(dtype[, order, casting, subok, copy]): 행렬 데이터를 복사하고 데이터 유형은 지정된 데이터 유형


byteswap(inplace) 배열 요소의 바이트를 교환합니다


choose(choices[, out, mode]): 주어진 인덱스에 따라 새로운 데이터 매트릭스를 얻습니다(인덱스는 선택 항목에서 제공됩니다)


clip(a_min, a_max[ , out]): 새 행렬을 반환합니다. 주어진 요소보다 큰 요소는 a_max이고, 작은 요소는 a_min


압축(조건[, 축, 출력]): 조건을 만족하는 행렬을 반환합니다


conj() :返回复数的共轭复数


conjugate() :返回所有复数的共轭复数元素


copy([order]) :复制一个矩阵并赋给另外一个对象,b=a.copy()


cumprod([axis, dtype, out]) :返回沿指定轴的元素累积矩阵


cumsum([axis, dtype, out]) :返回沿指定轴的元素累积和矩阵


diagonal([offset, axis1, axis2]) :返回矩阵中对角线的数据


dot(b[, out]) :两个矩阵的点乘


dump(file) :将矩阵存储为指定文件,可以通过pickle.loads()或者numpy.loads()如:a.dump(‘d:\a.txt’)


dumps() :将矩阵的数据转存为字符串.


fill(value) :将矩阵中的所有元素填充为指定的value


flatten([order]) :将矩阵转化为一个一维的形式,但是还是matrix对象


getA() :返回自己,但是作为ndarray返回


getA1():返回一个扁平(一维)的数组(ndarray)


getH() :返回自身的共轭复数转置矩阵


getI() :返回本身的逆矩阵


getT() :返回本身的转置矩阵


max([axis, out]) :返回指定轴的最大值


mean([axis, dtype, out]) :沿给定轴方向,返回其均值


min([axis, out]) :返回指定轴的最小值


nonzero() :返回非零元素的索引矩阵


prod([axis, dtype, out]) :返回指定轴方型上,矩阵元素的乘积.


ptp([axis, out]) :返回指定轴方向的最大值减去最小值.


put(indices, values[, mode]) :用给定的value替换矩阵本身给定索引(indices)位置的值


ravel([order]) :返回一个数组,该数组是一维数组或平数组


repeat(repeats[, axis]) :重复矩阵中的元素,可以沿指定轴方向重复矩阵元素,repeats为重复次数


reshape(shape[, order]) :改变矩阵的大小,如:reshape([2,3])


resize(new_shape[, refcheck]) :改变该数据的尺寸大小


round([decimals, out]) :返回指定精度后的矩阵,指定的位数采用四舍五入,若为1,则保留一位小数


searchsorted(v[, side, sorter]) :搜索V在矩阵中的索引位置


sort([axis, kind, order]) :对矩阵进行排序或者按轴的方向进行排序


squeeze([axis]) :移除长度为1的轴


std([axis, dtype, out, ddof]) :沿指定轴的方向,返回元素的标准差.


sum([axis, dtype, out]) :沿指定轴的方向,返回其元素的总和


swapaxes(axis1, axis2):交换两个轴方向上的数据.


take(indices[, axis, out, mode]) :提取指定索引位置的数据,并以一维数组或者矩阵返回(主要取决axis)


tofile(fid[, sep, format]) :将矩阵中的数据以二进制写入到文件


tolist() :将矩阵转化为列表形式


tostring([order]):将矩阵转化为python的字符串.


trace([offset, axis1, axis2, dtype, out]):返回对角线元素之和


transpose(*axes) :返回矩阵的转置矩阵,不改变原有矩阵


var([axis, dtype, out, ddof]) :沿指定轴方向,返回矩阵元素的方差


view([dtype, type]) :生成一个相同数据,但是类型为指定新类型的矩阵。


举例

>>> a = np.asmatrix(&#39;0 2 7; 3 4 8; 5 0 9&#39;)
>>> a.all()
False
>>> a.all(axis=0)
matrix([[False, False,  True]], dtype=bool)
>>> a.all(axis=1)
matrix([[False],
[ True],
[False]], dtype=bool)
로그인 후 복사

Astype方法

>>> a.astype(float)
matrix([[ 12.,   3.,   5.],
[ 32.,  23.,   9.],
[ 10., -14.,  78.]])
로그인 후 복사

Argsort方法

>>> a=np.matrix(&#39;12 3 5; 32 23 9; 10 -14 78&#39;)
>>> a.argsort()
matrix([[1, 2, 0],
[2, 1, 0],
[1, 0, 2]])
로그인 후 복사

Clip方法

>>> a
matrix([[ 12,   3,   5],
[ 32,  23,   9],
[ 10, -14,  78]])
>>> a.clip(12,32)
matrix([[12, 12, 12],
[32, 23, 12],
[12, 12, 32]])
로그인 후 복사


Cumprod方法

 
>>> a.cumprod(axis=1)
matrix([[    12,     36,    180],
[    32,    736,   6624],
[    10,   -140, -10920]])
로그인 후 복사

Cumsum方法

>>> a.cumsum(axis=1)
matrix([[12, 15, 20],
[32, 55, 64],
[10, -4, 74]])
로그인 후 복사


Tolist方法

>>> b.tolist()
[[12, 3, 5], [32, 23, 9], [10, -14, 78]]
로그인 후 복사

Tofile方法

>>> b.tofile(&#39;d:\\b.txt&#39;)
로그인 후 복사

compress()方法

>>> from numpy import *

>>> a = array([10, 20, 30, 40])
>>> condition = (a > 15) & (a < 35)
>>> condition
array([False, True, True, False], dtype=bool)
>>> a.compress(condition)
array([20, 30])
>>> a[condition]                                      # same effect
array([20, 30])
>>> compress(a >= 30, a)                              # this form a
so exists
array([30, 40])
>>> b = array([[10,20,30],[40,50,60]])
>>> b.compress(b.ravel() >= 22)
array([30, 40, 50, 60])
>>> x = array([3,1,2])
>>> y = array([50, 101])
>>> b.compress(x >= 2, axis=1)                       # illustrates 
the use of the axis keyword
array([[10, 30],
[40, 60]])
>>> b.compress(y >= 100, axis=0)
array([[40, 50, 60]])
로그인 후 복사

   


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Python을 사용하여 텍스트 파일의 ZIPF 배포를 찾는 방법 Python을 사용하여 텍스트 파일의 ZIPF 배포를 찾는 방법 Mar 05, 2025 am 09:58 AM

이 튜토리얼은 Python을 사용하여 Zipf의 법칙의 통계 개념을 처리하는 방법을 보여주고 법을 처리 할 때 Python의 읽기 및 대형 텍스트 파일을 정렬하는 효율성을 보여줍니다. ZIPF 분포라는 용어가 무엇을 의미하는지 궁금 할 것입니다. 이 용어를 이해하려면 먼저 Zipf의 법칙을 정의해야합니다. 걱정하지 마세요. 지침을 단순화하려고 노력할 것입니다. Zipf의 법칙 Zipf의 법칙은 단순히 : 큰 자연어 코퍼스에서 가장 자주 발생하는 단어는 두 번째 빈번한 단어, 세 번째 빈번한 단어보다 세 번, 네 번째 빈번한 단어 등 4 배나 자주 발생합니다. 예를 살펴 보겠습니다. 미국 영어로 브라운 코퍼스를 보면 가장 빈번한 단어는 "TH입니다.

HTML을 구문 분석하기 위해 아름다운 수프를 어떻게 사용합니까? HTML을 구문 분석하기 위해 아름다운 수프를 어떻게 사용합니까? Mar 10, 2025 pm 06:54 PM

이 기사에서는 HTML을 구문 분석하기 위해 파이썬 라이브러리 인 아름다운 수프를 사용하는 방법을 설명합니다. 데이터 추출, 다양한 HTML 구조 및 오류 처리 및 대안 (SEL과 같은 Find (), find_all (), select () 및 get_text ()와 같은 일반적인 방법을 자세히 설명합니다.

Tensorflow 또는 Pytorch로 딥 러닝을 수행하는 방법은 무엇입니까? Tensorflow 또는 Pytorch로 딥 러닝을 수행하는 방법은 무엇입니까? Mar 10, 2025 pm 06:52 PM

이 기사는 딥 러닝을 위해 텐서 플로와 Pytorch를 비교합니다. 데이터 준비, 모델 구축, 교육, 평가 및 배포와 관련된 단계에 대해 자세히 설명합니다. 프레임 워크, 특히 계산 포도와 관련하여 주요 차이점

파이썬 객체의 직렬화 및 사제화 : 1 부 파이썬 객체의 직렬화 및 사제화 : 1 부 Mar 08, 2025 am 09:39 AM

파이썬 객체의 직렬화 및 사막화는 사소한 프로그램의 주요 측면입니다. 무언가를 Python 파일에 저장하면 구성 파일을 읽거나 HTTP 요청에 응답하는 경우 객체 직렬화 및 사태화를 수행합니다. 어떤 의미에서, 직렬화와 사제화는 세계에서 가장 지루한 것들입니다. 이 모든 형식과 프로토콜에 대해 누가 걱정합니까? 일부 파이썬 객체를 지속하거나 스트리밍하여 나중에 완전히 검색하려고합니다. 이것은 세상을 개념적 차원에서 볼 수있는 좋은 방법입니다. 그러나 실제 수준에서 선택한 직렬화 체계, 형식 또는 프로토콜은 속도, 보안, 유지 보수 상태 및 프로그램의 기타 측면을 결정할 수 있습니다.

파이썬의 수학 모듈 : 통계 파이썬의 수학 모듈 : 통계 Mar 09, 2025 am 11:40 AM

Python의 통계 모듈은 강력한 데이터 통계 분석 기능을 제공하여 생물 통계 및 비즈니스 분석과 같은 데이터의 전반적인 특성을 빠르게 이해할 수 있도록 도와줍니다. 데이터 포인트를 하나씩 보는 대신 평균 또는 분산과 같은 통계를보고 무시할 수있는 원래 데이터에서 트렌드와 기능을 발견하고 대형 데이터 세트를보다 쉽고 효과적으로 비교하십시오. 이 튜토리얼은 평균을 계산하고 데이터 세트의 분산 정도를 측정하는 방법을 설명합니다. 달리 명시되지 않는 한,이 모듈의 모든 함수는 단순히 평균을 합산하는 대신 평균 () 함수의 계산을 지원합니다. 부동 소수점 번호도 사용할 수 있습니다. 무작위로 가져옵니다 수입 통계 Fracti에서

파이썬으로 전문 오류 처리 파이썬으로 전문 오류 처리 Mar 04, 2025 am 10:58 AM

이 튜토리얼에서는 전체 시스템 관점에서 Python의 오류 조건을 처리하는 방법을 배웁니다. 오류 처리는 설계의 중요한 측면이며 최종 사용자까지 가장 낮은 수준 (때로는 하드웨어)에서 교차합니다. y라면

인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? 인기있는 파이썬 라이브러리와 그 용도는 무엇입니까? Mar 21, 2025 pm 06:46 PM

이 기사는 Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask 및 요청과 같은 인기있는 Python 라이브러리에 대해 설명하고 과학 컴퓨팅, 데이터 분석, 시각화, 기계 학습, 웹 개발 및 H에서의 사용에 대해 자세히 설명합니다.

아름다운 수프로 파이썬에서 웹 페이지를 긁어 내기 : 검색 및 DOM 수정 아름다운 수프로 파이썬에서 웹 페이지를 긁어 내기 : 검색 및 DOM 수정 Mar 08, 2025 am 10:36 AM

이 튜토리얼은 간단한 나무 탐색을 넘어서 DOM 조작에 중점을 둔 아름다운 수프에 대한 이전 소개를 바탕으로합니다. HTML 구조를 수정하기위한 효율적인 검색 방법과 기술을 탐색하겠습니다. 일반적인 DOM 검색 방법 중 하나는 EX입니다

See all articles