달력

22025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

브로드 캐스팅은  NumPY에서  shape가 다른 배열간에도 산술 연산이 가능하게 하는 기능이다. 

 

shape가 일치하지 않으면 다차원 배열을 할 수 없다고 했다. 이 기능은 특정 경우에만 사용할 수 있다. 모든 경우에 해당하는 것은 아니다. 큰 배열에 작은 배열을 여러번 연산하고자 할 때, 예를 들어 행렬의 각 행에 상수 벡터를 더하는 경우이다.

 

 

 

 

두 배열의 브로드캐스팅 규칙

1. 두 배열이 동일한 dimension을 가지고 있지 않다면 낮은 dimension의 1차원 배열이 높은 dimension 배열의 shpae로 간주한다.

2. 특정 차원에서 두 배열이 동일한 크기를 갖거나 두 배열 중 하나의 크기가 1이라면 그 두 배열은 특정 차원에서 compatible하다고 여겨진다

3. 두 행렬이 모든 차원에서 compatible하다면 브로드캐스팅이 가능하다.

4. 브로드캐스팅이 이뤄지면 각 배열 shape의 요소별 최소공배수로 이루어진 shape 가 두 배열의 shape로 간주한다.

5. 차원에 상관없이 크기가 1인 배열과 1보다 큰 배열이 있을 때, 크기가 1인 배열은 자신의 차원 수만큼 복사되어 샇인 것처럼 간주하다.

 

즉 다시 말해 차원이 낮은 배열을 쌓을 때 shpae가 동일하게 쌓을 수 없다면 더해지는 모양이 안나오면 브로드캐스팅이 되지 않는다.( 최소한 dimension은 동일해야 한다.)

 

브로드캐스팅을 지원하는 함수를 universal function 이라고 한다.

 

https://docs.scipy.org/doc/numpy/reference/ufuncs.html

 

Universal functions (ufunc) — NumPy v1.16 Manual

Universal functions (ufunc) A universal function (or ufunc for short) is a function that operates on ndarrays in an element-by-element fashion, supporting array broadcasting, type casting, and several other standard features. That is, a ufunc is a “vectori

docs.scipy.org

 

브로트캐스팅의 예

 

 

마지막으로 opencv-python을 이용하여 이미지 하나를 로드한 후 그 이미지의 ndarray의 shape와 ndim을 살펴보자

cv의 이미지 ndarray

 

Posted by 생짜
|

인덱싱과 슬라이싱은 NumPY에서 데이터를 다루는 중요한 부분 중에 하나이다.

 

Python의 List와 유사하게 NumPY ndarray도 슬라이싱을 할 수 있는데 다차원인 경우가 많기 때문에 각 차원별로 어떻게 슬라이스할건지 명확히 해야한다. NumPY ndarray를 슬라이싱하면 결과로 얻어지는 배열은 언제나 원본 배열의 부분 배열이다.

 

  • NumPY slicing?   

      연속된 객체 범위를 지정 선택해서 객체들을 가져오는 방법으로 슬라이싱을 하면 새로운 객체를 생성하게 된다. 원본 배열의 일부분을 복사해서 가져오지만 새로운 배열이 아니라 레퍼런스이다.

 

기본형태 : array_name[start:end:step]

각각 start, end, step은 양수와 음수를 가질 수 있다.

start: 슬라이싱을 시작할 위치로 start를 기술하지 않으면 0을 나타낸다.

end: 슬라이싱을 끝낼 위치로 end를 포함하지 않는다. 즉 end-1을 나타낸다. end를 기술하지 않으면 끝을 나타낸다.

step: stride라고도 하며 몇개씩 끊어서 가져올지를 정한다. 옵션으로 삭제할 수도 있다.

start:end:step은 ','를 이용해서 슬라이싱할 수 있다.

array_name[행 슬라이싱 시작:행 슬라이싱 끝, 열 슬라이싱 시작:열 슬라이싱 끝]

 

 

ndarray에서 인덱스 값들의 위치

양수: 연속적인 객체들의 제일 앞에서부터 0을 시작으로 함

음수: 연속적인 객체들의 제일 뒤에서부터 -1을 시작으로 함

ex_array[a,b,c,d,e]

양수의 경우 a, b, c, d, e는 순서대로 0, 1, 2, 3, 4 양수의 인덱스 값을 같고

음수의 경우 a, b, c, d, e는 순서대로 -5, -4, -3 ,-2, -1 음수의 인덱스 값을 같는다

 

원본 ndarray와 slicing된 ndarray의 관계

 

slicing된 ndarray 값 변경 후 원본 확인

 

 

행과 열 slicing의 예

 

행과 열 slicing의 결과

 

 

  • NumPY 인덱싱

 

슬라이싱이 자르는 것이라면 인덱싱은 선택을 해서 가져오는 것이다. 인덱싱을 통해서 원소에 접근할 수 있다.

인덱싱은 아래 두 가지 방법으로 접근할 수 있다.

 

  • a[0,0] //python에서 선호하는 방법, python에서는 이 방법을 사용하자.
  • a[0][0] //C++ style

 

ndarray를 인덱싱하면 연속하지 않은 값을 가져올 수 있기 때문에 원본과 다른 배열을 만들 수 있다.

 

인덱싱 예

 

인덱싱 결과

 

  • 인덱싱과 슬라이싱의 차원

 

인덱싱과 슬라이싱을 혼합해서 사용하면 낮은 차원의 배열이 생성된다.

슬라이싱은 원본의 데이타를 그대로 가져오는 레퍼러스이기 때문에 원본과 동일한 차원의 배열이 생성된다.

인덱싱은 원본에서 새로운 배열을 가져오는 것이기 때문에 원본보다 낮은 차원의 배열이 생성될 수 있다.

인덱싱을 하면은 해당 인덱싱 값만 가져오기 때문이다. 다차원 배열의 연산을 할 때는 차원이 같아야 한다. 

다차원 배열에서는 차원이 달라 연산 시 문제가 될 때가 있다. 특별히 인덱싱을 써야하는 상황이 아니라면 슬라이싱으 추천한다.

 

인덱스와 슬라이싱의 차원

 

결과

 

  • 불리언 배열 인덱싱

 

불리언 배열 인덱싱을 통해 배열 속 요소를 취사선택할 수 있다. 불리언 배열 인덱싱은 특정 조건을 만족하게 하는 요소만 선택하고자 할 때 자주 사용된다.

불리언 인덱싱

 

불리언 인덱싱

 

불리언 인덱싱은 다차원 배열에서 데이터를 필터링 할 때 많이 쓴다. 특정 조건을 만족하는 요소를 선택하고자 할 때 사용한다.

 

 

  • 정수 배열 인덱싱

정수 배열 인덱싱

 

정수 배열 인덱싱 결과

 

 

  • 전치(transpose)

전치는 모양(stride)을 바꾸는 기능을 한다. 종종 배열의 모양을 바꾸어 데이터를 처리할 때가 있다. 가장 간단한 예는 행렬의 주 대각선을 기준으로 대칭되는 요소끼리 뒤바뀌는 것이다.

행렬을 전치하기 위해서는 간단하게 배열 객체의 'T' 속성을 사용하면 된다. 1차원일 경우 대각선이 없기 때문에 전치를 해도 아무런 변화가 없다.

데이터 분석할 때 많이 사용하지는 않지만 머신러닝의 알고리즘을 구현할 때는 많이 사용한다.

 

전치

 

전치 결과

 

 

  • Shape변경

 

shape 변경에는 크게 세가지 메서드를 볼 것이다.

https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html?highlight=reshape

resahape 메서드는 다차원 배열 데이타의 값 변화 없이 shape의 형태만 바꾸는 메서드이다.

 

numpy.reshape — NumPy v1.16 Manual

Parameters: a : array_like Array to be reshaped. newshape : int or tuple of ints The new shape should be compatible with the original shape. If an integer, then the result will be a 1-D array of that length. One shape dimension can be -1. In this case, the

docs.scipy.org

 

reshape

 

reshape 결과

 

 

ravel을 다차원 배열을 직선,  1차원으로 만들어 주는 것이다. ravel은 몰라도 resahpe를 할 줄 알면 된다. 편한 점은 사이즈를 명시하지 않아도 된다는 것이다.

https://docs.scipy.org/doc/numpy/reference/generated/numpy.ravel.html?highlight=ravel

 

numpy.ravel — NumPy v1.16 Manual

Parameters: a : array_like Input array. The elements in a are read in the order specified by order, and packed as a 1-D array. order : {‘C’,’F’, ‘A’, ‘K’}, optional The elements of a are read using this index order. ‘C’ means to index the elements in row-m

docs.scipy.org

 

주로 NN학습을 할 때 사용한다. 3차워을 NN에 바로 넣어주지 않고 1차원으로 만들어서 넣어준다.

 

 

flatten은 NumPY의 모듈 함수가 아니기 때문에 np.flatten으로 사용할 수 없다. ndarray 객체의 메서드로만 사용할 수있다. reval과 동일한 결과를 나타낸다. 

https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flatten.html?highlight=flatten

 

numpy.ndarray.flatten — NumPy v1.16 Manual

Parameters: order : {‘C’, ‘F’, ‘A’, ‘K’}, optional ‘C’ means to flatten in row-major (C-style) order. ‘F’ means to flatten in column-major (Fortran- style) order. ‘A’ means to flatten in column-major order if a is Fortran contiguous in memory, row-major or

docs.scipy.org

 

  • ravel()과 flatten()의 차이점

flatten은 객체의 메서드로만 사용가능

ravel은 뷰(참조)를 반환, flatten은 복사본을 반환

 

 

 

  • 연결(numpy.concatenate)

https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html?highlight=concatenate

 

numpy.concatenate — NumPy v1.16 Manual

Parameters: a1, a2, … : sequence of array_like The arrays must have the same shape, except in the dimension corresponding to axis (the first, by default). axis : int, optional The axis along which the arrays will be joined. If axis is None, arrays are flat

docs.scipy.org

 

 

다차원 배열 연산

기본적인 수학함수는 배열의 각 요소별로 동작하며 연산자를 통해 동작하거나 numpy함수 모듈을 통해 동작한다.

다차원 배열간 연산 시 shape가 맞아야 연산이 이루어진다.

- 요소별 합, 차, 곱, 나눗셈의 경우 shape가 일치해야 함

- dot의 경우 앞 배열의 열과 뒤 배열의 행의 크기가 일치해야 함

다차원 배열의 연산

 

다차원 배열의 연산 결과

 

NumPY에서는 벡터의 내적, 베터와 행렬의 곱, 행렬곱을 위해 *대신 dot 함수들을 사용한다. dot은 NumPY 모듈 함수또는 배열 객체의 메소드로서도 이용 가능한 함수이다.

dot함수는 인자값에 따라 명칭도 달라진다.

 

Posted by 생짜
|

ndarray의 축 설명

 

ndarray의 통계값을 구할 때는 전체에서 구할 수도 있지만 행/열 등 축을 기준으로 구할 수도 있다.

 

  • NumPY amin - 최소값 구하기

https://docs.scipy.org/doc/numpy/reference/generated/numpy.amin.html?highlight=amin

 

numpy.amin — NumPy v1.16 Manual

Parameters: a : array_like Input data. axis : None or int or tuple of ints, optional Axis or axes along which to operate. By default, flattened input is used. If this is a tuple of ints, the minimum is selected over multiple axes, instead of a single axis

docs.scipy.org

 

  • NumPY amax - 최대값 구하기

https://docs.scipy.org/doc/numpy/reference/generated/numpy.amax.html?highlight=amax

 

numpy.amax — NumPy v1.16 Manual

Parameters: a : array_like Input data. axis : None or int or tuple of ints, optional Axis or axes along which to operate. By default, flattened input is used. If this is a tuple of ints, the maximum is selected over multiple axes, instead of a single axis

docs.scipy.org

 

  • NumPY ptp - 최대, 최소의 범위 값을 구한다.

ndarray의 크기가 커서 전체를 다 볼 수 없을 때 해당 다차원 배열의 최대, 최소의 범위를 보는 함수이다.

https://docs.scipy.org/doc/numpy/reference/generated/numpy.ptp.html?highlight=ptp#numpy.ptp

 

numpy.ptp — NumPy v1.16 Manual

Parameters: a : array_like Input values. axis : None or int or tuple of ints, optional Axis along which to find the peaks. By default, flatten the array. axis may be negative, in which case it counts from the last to the first axis. If this is a tuple of i

docs.scipy.org

 

  • NumPY median

https://docs.scipy.org/doc/numpy/reference/generated/numpy.median.html?highlight=median

 

numpy.median — NumPy v1.16 Manual

Parameters: a : array_like Input array or object that can be converted to an array. axis : {int, sequence of int, None}, optional Axis or axes along which the medians are computed. The default is to compute the median along a flattened version of the array

docs.scipy.org

 

  • NumPY mean

산술평균을 구할 때 쓴다. 가중평균을 구할 때는 average 메서드를 사용한다.

https://docs.scipy.org/doc/numpy/reference/generated/numpy.mean.html#numpy.mean

 

numpy.mean — NumPy v1.16 Manual

Parameters: a : array_like Array containing numbers whose mean is desired. If a is not an array, a conversion is attempted. axis : None or int or tuple of ints, optional Axis or axes along which the means are computed. The default is to compute the mean of

docs.scipy.org

 

  • NumPY var - 분산

https://docs.scipy.org/doc/numpy/reference/generated/numpy.var.html?highlight=var

 

numpy.var — NumPy v1.16 Manual

Parameters: a : array_like Array containing numbers whose variance is desired. If a is not an array, a conversion is attempted. axis : None or int or tuple of ints, optional Axis or axes along which the variance is computed. The default is to compute the v

docs.scipy.org

 

  • NumPY std - 표준편차

https://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html?highlight=std

 

numpy.std — NumPy v1.16 Manual

Parameters: a : array_like Calculate the standard deviation of these values. axis : None or int or tuple of ints, optional Axis or axes along which the standard deviation is computed. The default is to compute the standard deviation of the flattened array.

docs.scipy.org

 

Posted by 생짜
|

다차원 배열의 자료형

NumPY의 다차원배열의 원소는 동일한 데이터 타입을 가져야 한다. 다양한 자료형을 하나의 배열에 표현하고 싶을 경우 Pandas의 데이타프레임을 이용하면 된다.

 

직접 값을 입력해 다차원 배열을 만드는 방법

  • np.array() 메서드를 이용

 

bool형 ndarray 만들기

bool형 ndarray 생성

 

결과

 

https://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html?highlight=array#numpy.array

 

numpy.array — NumPy v1.16 Manual

Parameters: object : array_like An array, any object exposing the array interface, an object whose __array__ method returns an array, or any (nested) sequence. dtype : data-type, optional The desired data-type for the array. If not given, then the type wil

docs.scipy.org

https://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.html?highlight=dtype#numpy.dtype

 

numpy.dtype — NumPy v1.16 Manual

Attributes: alignment The required alignment (bytes) of this data-type according to the compiler. More information is available in the C-API section of the manual. base byteorder A character indicating the byte-order of this data-type object. One of: ‘=’ n

docs.scipy.org

 

 

정수형 ndarray 만들기

정수형 다차원배열은 정수형, 부호없는 정수형, 실수형, 복소수형이 있다. 정수형의 default data type는 'int64' 이다.

  • 정수형

 

  • 부호없는 정수형

 

  • 실수형

 

  • 복소수형

 

  • python list에서

 

  • 3차원 ndarray 만들기

 

 

파일에서 데이터를 입력 받아 다차원 배열 생성하기

np.genfromtxt()을 이용하여 파일에 저장된 데이터를 입력받아 다차원 배열을 생성할 수 있다.

  • ndarray는 동일한 자료형만 가질 수 있다.( C의 배열이기 때문에 )
  • 파일에는 정수, 실수, 문자열이 섞여 있기 때문에 사용상 어려움이 있다.
  • 파일에서 데이터를 읽어올 때는 genfromtxt보다는 Pandas의 read_csv(), read_excel()을 주로 사용한다.

https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

 

numpy.genfromtxt — NumPy v1.16 Manual

Parameters: fname : file, str, pathlib.Path, list of str, generator File, filename, list, or generator to read. If the filename extension is gz or bz2, the file is first decompressed. Note that generators must return byte strings in Python 3k. The strings

docs.scipy.org

 

 

 

NumPY의 메서드를 이용해 다차원 배열을 만드는 방법

NumPY의 array 함수를 이용해서 다차원 배열을 만들었다. 이제 array가 아닌 다른 메서드를 이용해서  다차원 배열을 만드는 방법을 알아보자

 

https://docs.scipy.org/doc/numpy/reference/routines.array-creation.html

 

Array creation routines — NumPy v1.16 Manual

Note numpy.char is the preferred alias for numpy.core.defchararray.

docs.scipy.org

 

다차원 Array를 만드는 다른 방법들.

 

 

 

 

 

 

 

 

 

10 * np.ones((2,2))

 

 

https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html#numpy.linspace

 

numpy.linspace — NumPy v1.16 Manual

Parameters: start : array_like The starting value of the sequence. stop : array_like The end value of the sequence, unless endpoint is set to False. In that case, the sequence consists of all but the last of num + 1 evenly spaced samples, so that stop is e

docs.scipy.org

 

Posted by 생짜
|
Posted by 생짜
|
Posted by 생짜
|
Posted by 생짜
|

1. NumPY ?

karma( 업 )/Python 2019. 5. 5. 09:11

NumPY는 벡터 행렬계산을 효율적으로 처리하기 위한 모듈로 Numeric 모듈과 Numarray 모듈이 합쳐져 높은 수준의 다차원 배열 계산을 고속 및 효율적으로 처리할 수 있다. 역시 pip 로 설치할 수 있다. pip로 opencv-python을 설치할 때 numpy는 자동으로 설치가 되는데 영상을 다룰때 numpy는 꼭 필요한 lib이기 때문이다.

하지만 NumPY만으로는 무언가를 할 수는 없다. NumPY는 데이타를 가공하는 도구일 뿐이기 때문이다. NumPY를 통해 1차적으로 가공된 다차원배열의 데이타( 영상같은 )를 가지고 opencv 같이 필요한 모듈에서 사용하는 것이다.

 

NumPY, Scipy, Matplotlib와 opencv-python에 대해 정리를 할 것이다.  따로 Python 문법에 대해서는 언급하지 않을 것이다. python 문법은 간단하기 때문에 필요 모듈을 공부하다 보면 자연스럽게 익혀지게 될 것이다.

아래 사이트는 Python의 자료형 및 NumPy 및 영상처리를 위한 Scipy와 Matplotlib에 대한 내용이 있다.

 

Python, Numpy, Scipy, Matplotlib Tutorial

 

Python Numpy Tutorial

이 튜토리얼은 Justin Johnson 에 의해 작성되었습니다. cs231n 수업의 모든 과제에서는 프로그래밍 언어로 파이썬을 사용할 것입니다. 파이썬은 그 자체만으로도 훌륭한 범용 프로그래밍 언어이지만, 몇몇 라이브러리(numpy, scipy, matplotlib)의 도움으로 계산과학 분야에서 강력한 개발 환경을 갖추게 됩니다. 많은 분들이 파이썬과 numpy를 경험 해보셨을 거라고 생각합니다. 경험하지 못했을지라도 이 문서를 통해 ‘프로그래밍 언어로

aikorea.org

 

 NumPY는  파이썬이 계산과학분야에 이용될때 핵심 역할을 하는 라이브러리이다.

 

1. NumPY?

2. 다차원 배열 생성하기

3. 메서드를 이용해서 최대, 최소, 평균, 표준편차 등 통계값 구하기

4. 인덱싱, 슬라이싱, 전치, 형태변경, 연결, 연산을 이용한 다차원 배열 현태 변경하기

5. 브로드캐스팅, 벡터화 연산 NumPY 고급기능

 

순서대로 공부를 진행할 예정이다.

 

첫 번째로 '1. NumPY 개요'에 대해서 공부를 해보자. 

 

NumPY는 거의 모든 Python lib 모듈을 사용하는데 있어 기본이 된다.

NumPy 존재이유

 

NumPY는 Pandas, Scikit-learn, Tensorflow등 데이터 사이언스 분야에서 사용되는 라이브러리들의 토대가 되는 라이브러리이다. NumPY 는 높은 수준의 데이터 분석 기능을 제공하지 않지만 NumPY를 활용해 Python상에서 표현하고 다룰 줄 알아야만 데이터 분석이라는 그 이후 단계로 나아갈 수 있다. NumPY만으로는 머신러닝을 할 수 없다. NumPY는 다차원 배열이라는 ndarray를 데이타로 나나태는 특화된 라이브러리이다. NumPY를 사용해서 데이타를 분석하거나 머신러닝 코드를 짜는게 목적이기 때문에 라이브러리로써 사용할 줄 알게 되면 된다. 다시 말해 NumPY는 다차원 배열을 나타내기 위한 라이브러리이다. 

Python에는 list라는 컨테이너가 있다. 이 list안에 list를 중첩시킴으로써 다차원 배열을 나타낼 수 있다. Python의 list와 NumPY는 무엇이 다를까? Python의 list에 접근하기 위해서는 for문을 사용하고 1차원에서 2차원으로 데이터의 차원이 증가하면 반복문도 중첩되게 사용하게 되어 데이터의 차원이 증가할수록 코드는 복잡해질 수밖에 없다. NumPY를 사용하면 다차원배열을 효율적으로 다룰 수 있고 C로 구현되어 있는 NumPY보다 Python의 list가 느리다. 

 

NumPY 사용 예

 

결과 값

 

NumPY 장점

  • 코어부분이 C로 구현되어 동일한 연산을 하더라도 Python에 비해 속도가 빠르다.
  • 라이브러리에 구현되어있는 함수들을 활용해 짧고 간결한 코드 작성이 가능하다.
  • 효율적인 메모리 사용이 가능하도록 구현되어 있다. 

 

NumPY는 다차원 배열을 내부에 구현되어 있는 메소들을 사용하여 편리하게 사용, 나타낼 수 있으며 빠르기 때문에 많이 사용된다. 

 

ndarray가 list보다 빠른 이유

ndarrary vs list 구조

 

그림에서 보면 Python list에는 데이터가 들어있지 않고 데이터를 가르키는 포인터, 주소값이 들어가 있다. NumPY이는 C 배열처럼 연속적으로 데이터가 그대로 입력되어 있어 구조상으로 차이가 난다. NumPY는 이 데이터를 C 반복문으로 순회하고 Python은 Python 반복문으로 순회하기 때문에 구조적으로 언어적으로 속도의 차이가 발생한다. 

 

Python list가 느린 이유

  • Python list는 결국 포인터의 배열
  • 경우에 따라 각각 객체가 메모리 여기저기 흩어져 있어 캐시 활용이 어렵다.

 

NumPY ndarray가 빠른 이유

  • ndarray는 타입을 명시하여 원소의 배열로 데이터를 유지
  • 다차원 데이터도 연속된 메모리 공간에 활당된다.
  • 많은 연산이 dimension과 strides를 잘 활용하면 효율적으로 가능

 

 

 

 

 

Posted by 생짜
|

Python, Virtualenv, OpenCV, PyCharm을 설치하고 사용하는 것이, 이게 이렇게 길게 설명해야 할 것인지 몰랐다.

이제 마지막이다. 파이참 설치 후 새로운 virtualenv 환경을 만들어서 파이참에 연결해보자

 

파이참을 다운로드해서 설치한다. ( Download Site )

 

항상 그렇듯이 'Next' 버튼을 눌러주어 설치 마치면 된다. 꼭 'Community For pure Python development Free, open-source' 버전을 다운받아야 한다.

 

파이참 설치가 끝났으면 새로운 가상환경을 만들어보자

lectures_env라는 이름으로 새로운 가상환경을 만들었다.

 

만들어진 lectures_env 확인

 

가상환경을 만들었으면 파이참을 실행 시킨 후 'File' -> 'New Project'를 선택하여 새로운 프로젝트를 만든다.

Location 에디터박스에서 02_lectures폴더 밑에 lectures 폴더를 만든다. 앞으로 Python-OpenCV의 소스코드를 작성할 파이참 프로젝트 폴더이다.

 

Lacation 에디터 박스 밑에 Project Interpreter. 를 선택하면 두 개의 라디오 체크 박스가 나온다.

New envionment using 라디오 박스는 현재 파이참으로 만든 프로젝트 안에 새로운 가상환경을 만들겠단 소리이다. 이렇게 만든 가상환경은 해당 프로젝트에서 사용할 수 있다.

우리는 이미 만들어 놓은 가상환경이 있기 때문에 Exisitin Interpreter를 선택한다.

 

전 프로젝트에서 설정해 놓은 가상환경이 있어서 해당 가상환경이 선택되어져 있다. 이 가상환경이 아니라 새로만든 lectures_env를 선택해 보도록 하자.

아래 이미지를 대로 진행하면 된다.

'...' 을 클릭하여 File 경로를 선택할 수 있는 창을 생성한다.

 

만들어 놓은 가상환경을 선택한 후 프로젝트를 생성한다.

 

이제 가상환경 셋팅이 끝났다. 파이참에서 생성한 프로젝트에 새로운 Python 파일을 만든 후 OpenCV 버전을 확인해 보자

 

'karma( 업 ) > Python' 카테고리의 다른 글

2. 다차원 배열 생성하기  (0) 2019.05.06
1. NumPY ?  (1) 2019.05.05
Python, Virtualenv, OpenCV, PyCharm 설치( 2 )  (0) 2019.05.01
Python, Virtualenv, OpenCV, PyCharm 설치( 1 )  (0) 2019.05.01
초보자를 위한 파이썬 300제  (0) 2019.04.15
Posted by 생짜
|

Python을 다운 받아 설치한다.( Download Site )

링크를 클릭하여 설치할 Python을 다운 받는다. 나는 3.7.3 windwos 버전을 받아 설치했다.

 

Python 3.7.3 Windows version download

 

설치시 꼭 환경 설정 체크박스에 체크하자. 안그러면 설치 후 따로 환경설정을 해야 한다. 그 외에는 언제나 그렇듯이 'Next' 이다.

Python 설치 시 꼭 PATH에 체크하자.

Python 설치가 끝나면 windows console 창을 실행 시켜 Python, pip 설치 여부를 확인하자

 

Python이 제대로 설치되어 있는 것을 확인했다. 이제 Python 가상환경인 virtualenv를 pip를 이용해서 설치해 본다.

virtualenv를 설치할 장소는 python을 설치한 곳으로 python 개발환경의 원본이 있는 곳으로 virtualenv는 글로벌하게 이 곳, 딱 한군데에 설치한다. 후에 설치된 virtualenv로 필요한 곳에 가상환경 폴더를 만들고 만들어진 가상환경 폴더에서 pip를 이용하여 작업에 필요한 여러 python 라이브러리를 설치하면 된다.

 

virtualenv 설치 및 버전확인

 

가상환경, 실제 프로젝트에서 사용할 컴파일 환경을 만든다.

원하는 위치에 가상환경을 만들었다.

가상환경 폴더 아래에 있는 Scripts 폴더

 

이 가상환경을 사용하는 프로젝트는 Scripts폴더에 있는 Python을 사용하여 컴파일을 하고 pip로 install한 lib를 사용하게 된다. 

 

이제 설치한 가상환경에 pip를 이용하여 이 가상환경에서만 사용할 openCV를 설치해본다. 가상환경에 라이브러리를 설치하려면 먼저 가상환경을 활성화 시켜야 한다. 가상환경을 활성하, 비활성화하는 명령은 \Scripts 폴더 밑의 'activate'/'deactivate' 명령어이다.

 

activate로 활성화 시켰다가 deactivate로 비화설화 시킨 상태

 

activate로 가상환경을 활성화 시키며 앞에 가상환경 폴더명이 나오는 것을 볼 수 있다. 이 상태에서 pip로 라이브러리를 설치하는 것이다.

 

OpenCV 설치화면

 

OpenCV를 설치 후 확인을 위해 Python을 실행시켜 버전 프린트

 

다음은 마지막으로 파이참 설치 후 virtualenv로 만든 가상환경을 파이참 프로젝트에 셋팅하여 확인해보자

'karma( 업 ) > Python' 카테고리의 다른 글

1. NumPY ?  (1) 2019.05.05
Python, Virtualenv, OpenCV, PyCharm 설치( 3 )  (0) 2019.05.01
Python, Virtualenv, OpenCV, PyCharm 설치( 1 )  (0) 2019.05.01
초보자를 위한 파이썬 300제  (0) 2019.04.15
Virtualenv?(Python 가상환경)  (0) 2019.04.15
Posted by 생짜
|