Main Content

이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

Python에 데이터 전달하기

MATLAB 데이터형과 Python 데이터형 간 매핑

MATLAB® 데이터를 Python®에 인수로 전달할 경우 MATLAB은 이 데이터를 Python 언어에서 가장 잘 나타낼 수 있는 데이터형으로 변환합니다.

MATLAB 입력 인수 유형 —
스칼라 값만 해당

결과 Python py. 데이터형

double
single

float

복소수 single
복소수 double

complex

int8
uint8
int16
uint16
int32

int

uint32
int64
uint64

int
long(버전 2.7만 해당)

NaN

float(nan)

Inf

float(inf)

string형 스칼라
char형 벡터

str

string형의 <missing>

None

logical

bool

구조체

dict

Python 객체 — py.type

type

Python 함수에 대한 함수 핸들 @py.module.function

module.function

MATLAB 벡터와 Python 간 매핑

MATLAB 입력 인수 데이터형 —
1xN 벡터

결과 Python 데이터형

double

array.array('d')

single

array.array('f')

int8

array.array('b')

uint8

array.array('B')

int16

array.array('h')

uint16

array.array('H')

int32

array.array('i')

uint32

array.array('I')

int64(Windows®에서의 Python 2.7에는 지원되지 않음)

array.array('q')

uint64(Windows에서의 Python 2.7에는 지원되지 않음)

array.array('Q')

127보다 큰 값을 포함하는 char형 배열(버전 2.7만 해당)

unicode

logical

memoryview

char형 벡터
string형 스칼라

str

cell형 벡터

tuple

행렬과 다차원 배열 전달하기

실수 숫자형 배열 또는 논리형 배열을 Python 함수에 전달할 때 MATLAB은 자동으로 데이터를 Python memoryview 객체로 변환합니다. Python 함수의 출력값이 실수 숫자형 또는 논리형이고,Python 버퍼 프로토콜을 구현하는 경우 MATLAB에 다음 항목이 표시됩니다.

  • 실제 Python 유형

  • 기본 데이터

  • 해당하는 MATLAB 변환 함수. 이 함수를 사용하여 Python 객체를 MATLAB 배열로 완전히 변환할 수 있습니다.

예를 들어, 모듈 pyModule에서 다음과 같은 값을 가진 pyType 유형의 변수를 반환하는 Python 함수를 호출한다고 가정해 보겠습니다.

p = 
  Python pyType:

     8     1     6
     3     5     7
     4     9     2

    Use details function to view the properties of the Python object.

    Use double function to convert to a MATLAB array.

p를 MATLAB 행렬 P로 변환하려면 다음과 같이 입력하십시오.

P = double(p)
P = 3×3    
     8     1     6
     3     5     7
     4     9     2

p의 Python 속성에 대한 구체적인 정보가 필요하면 다음과 같이 입력하십시오.

details(p)
  py.pyModule.pyType handle with properties:

           T: [1×1 py.pyModule.pyType]
        base: [1×1 py.NoneType]
      ctypes: [1×1 py.pyModule.core._internal._ctypes]
        data: [1×3 py.memoryview]
       dtype: [1×1 py.pyModule.dtype]
       flags: [1×1 py.pyModule.flagsobj]
        flat: [1×1 py.pyModule.flatiter]
        imag: [1×1 py.pyModule.pyType]
    itemsize: [1×1 py.int]
      nbytes: [1×1 py.int]
        ndim: [1×1 py.int]
        real: [1×1 py.pyModule.pyType]
       shape: [1×2 py.tuple]
        size: [1×1 py.int]
     strides: [1×2 py.tuple]

  Methods, Events, Superclasses

Python 모듈이 __doc__ 특성의 콘텐츠를 제공하는 경우, MATLAB은 이 정보로 연결됩니다.

Python memoryview 객체를 사용하면 Python에서 MATLAB 데이터의 복사본을 만들지 않고 MATLAB 데이터를 읽어 들일 수 있습니다. memoryview 객체와 버퍼 프로토콜에 대한 자세한 내용을 보려면 https://www.python.org/doc/에서 이 용어들을 검색하십시오.

MATLAB 복소수 배열 및 희소 배열은 Python에서 지원되지 않습니다. 항목을 참조하십시오.

인수 오류 해결하기

Python 함수에 특정 Python 다차원 배열 유형이 필요한 경우, MATLAB에는 진행 방법에 대한 팁이 포함된 메시지가 표시됩니다. 행렬 또는 다차원 배열이 인수로 전달되어 발생한 문제인 경우 다음을 수행하십시오.

  1. Python 함수의 도움말 문서에서 인수에 필요한 유형을 확인합니다.

  2. MATLAB에서 이 유형의 Python 객체를 생성한 후 Python 함수에 전달합니다.

예를 들어, 다음 코드가 오류를 반환한다고 가정해 보겠습니다.

a = [1 2; 3 4];
py.pyfunc(a)

pyfunc의 도움말 문서에 pyType 유형이 필요하다고 지정되어 있다면 다음과 같이 변환해 보십시오.

py.pyfunc(pyType(a))

오류가 계속되면 Python 예외의 추가 정보를 통해 근본 원인을 확인합니다.

관련 예제

세부 정보