MATLAB에서 MATLAB과 Python 간에 데이터 전달하기
MATLAB®에서 Python® 함수를 호출할 경우, Python 인터페이스는 MATLAB 입력 데이터를 Python 언어에서 해당 데이터를 가장 잘 나타내는 유형으로 변환합니다. Python 인터페이스는 또한 반환된 일부 Python 데이터를 MATLAB 데이터형으로 변환합니다.
데이터를 MATLAB에서 Python으로 전달하기
데이터를 MATLAB에서 Python으로 전달할 경우, 결과로 생성되는 Python 유형은 MATLAB 데이터가 스칼라 값인지 배열인지에 따라 달라집니다.
스칼라 값을 MATLAB에서 Python으로 전달하기
MATLAB에서, 스칼라 값을 Python 함수에 입력으로 전달할 경우, Python 인터페이스가 데이터를 그에 해당하는 Python 데이터형으로 자동 변환합니다.
MATLAB 입력 유형 | 결과 Python 데이터형 | 예제 |
|---|---|---|
|
| MATLAB에서 Python 숫자형 변수 사용하기 |
|
| z = complex(1,2); py.cmath.polar(z) ans =
Python tuple with values:
(2.23606797749979, 1.1071487177940904)
|
|
| |
|
|
n = NaN; py.float(n) ans =
Python float with properties:
imag: 0
real: NaN
nan |
|
|
i = Inf; py.float(i) ans =
Python float with properties:
imag: 0
real: Inf
inf
|
|
| MATLAB에서 Python str 변수 사용하기 |
|
| s = string(missing); py.str(s) ans =
Python str with no properties.
None
|
|
|
b = true; py.type(b) ans =
Python type with no properties.
<class 'bool'> |
|
| MATLAB에서 Python 딕셔너리 사용하기 |
| pandas.DataFrame | Use Python Pandas DataFrames in MATLAB |
datetime |
| MATLAB에서 Python datetime형 사용하기 |
duration |
| Use Python Duration Types in MATLAB |
Python 객체 — |
| - |
Python 함수에 대한 함수 핸들 |
| Pass Python Function to Python map Function |
배열 데이터를 MATLAB에서 Python으로 전달하기
MATLAB에서, MATLAB 배열을 Python 함수에 대한 입력값으로 전달하고 Python 환경에서 NumPy 모듈이 사용 가능한 경우, Python 인터페이스는 배열을 Python NumPy 배열로 자동으로 변환합니다. MATLAB 배열을 Python 함수에 대한 입력값으로 전달할 때 NumPy 모듈을 사용할 수 없다면 Python 인터페이스는 행렬 입력값을 처리하는 방식으로 벡터 입력값도 처리합니다. Python 인터페이스는 이러한 입력값을 Python memoryview 객체로 변환합니다. (R2025a 이후)
R2025a 이전: NumPy 패키지를 사용하거나 사용하지 않고 MATLAB 벡터를 Python 함수에 전달하면 Python 인터페이스는 이 벡터를 Python array.array 객체로 변환합니다.
MATLAB 입력 배열 유형(배열 데이터에만 해당) | NumPy 사용 시 결과 Python 데이터형 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1× |
|
|
|
|
|
| 자동 변환되지 않습니다. |
NumPy가 설치되어 있지 않은 상태에서 숫자형 MATLAB 배열이 Python으로 전달될 경우, Python 인터페이스가 배열 내용을 가리키는 memoryview 객체를 생성합니다. 이 memoryview 객체는 Python 버퍼 프로토콜을 구현하고 해당 배열의 복사본을 생성하지 않습니다. 이 예제에서 array.array는 MATLAB 배열로부터 만들어진 memoryview 객체에서 생성됩니다.
mArr = [1,2,3];
pyArr = py.array.array('d',mArr);
MATLAB 유형을 Python 유형으로 명시적으로 변환하기
Python 인터페이스가 다차원 MATLAB string형 데이터를 자동으로 변환하지 않지만, 해당 데이터를 Python 데이터형으로 명시적으로 변환할 수 있습니다.
MATLAB 유형 | 결과 Python 데이터형 | MATLAB 변환 함수 |
|---|---|---|
string형 배열 | NumPy |
지원되지 않는 MATLAB 유형
다음과 같은 MATLAB 유형은 Python에서 지원되지 않습니다.
희소 배열
비 스칼라
struct배열categoricalcontainers.MapMATLAB 객체
matlab.metadata.Class(py.class)
데이터를 Python에서 MATLAB으로 전달하기
MATLAB 내에서 Python 함수를 호출할 경우, 해당 함수는 어떤 데이터형의 데이터도 반환할 수 있습니다. Python 함수에서 반환된 데이터형에 따라 Python 인터페이스가 해당 출력값을 MATLAB 데이터형으로 자동 변환할 수도 있습니다. Python 인터페이스가 해당 데이터를 자동으로 변환하지 않는 경우, Python 함수는 Python 데이터형의 출력값을 반환합니다. 그러면 수동으로 MATLAB 데이터형으로 변환할 수 있습니다.
스칼라 값을 Python에서 MATLAB으로 반환하기
Python 함수가 다음과 같은 Python 데이터형의 스칼라 값을 반환할 경우, Python 인터페이스가 해당 값을 다음과 같은 MATLAB 유형으로 자동 변환합니다.
Python에 표시되는 Python 반환 데이터형 | 결과 MATLAB 데이터형 |
|---|---|
|
|
| 복소수 |
|
|
datetime |
|
| string |
Python 유형을 MATLAB 유형으로 명시적으로 변환하기
Python 함수가 다른 데이터 유형을 반환할 경우, Python 인터페이스가 해당 데이터를 자동으로 변환하지 않습니다. 다음 MATLAB 함수를 사용하여 Python 데이터형을 MATLAB 유형으로 명시적으로 변환할 수 있습니다.
MATLAB에 표시되는 Python 반환 데이터형 또는 프로토콜 | MATLAB 변환 함수 | 예 |
|---|---|---|
|
| MATLAB에서 Python str 변수 사용하기 |
|
| py.help('datetime.date.__str__')Help on wrapper_descriptor in datetime.date:
datetime.date.__str__ = __str__(self, /) unbound datetime.date method
Return str(self).d = py.datetime.date(...
int32(2020),int32(3),int32(4));
char(d)ans = '2020-3-04' |
|
| MATLAB에서 Python 숫자형 변수 사용하기 |
py.bool |
|
x = py.bool(true); double(x) ans =
1
|
|
|
b = py.bytes("MATLAB",'utf-8'); uint8(b) ans = 1×6 uint8 row vector 77 65 84 76 65 66 |
|
| MATLAB에서 Python 숫자형 변수 사용하기 |
|
| |
|
| MATLAB에서 Python list 변수 사용하기 |
|
| MATLAB에서 Python 딕셔너리 사용하기 |
py.pandas.DataFrame |
| Use Python Pandas DataFrames in MATLAB |
|
| MATLAB에서 Python datetime형 사용하기 |
|
| Use Python Duration Types in MATLAB |
지원되지 않는 Python 유형
Python enum 유형은 MATLAB에서 지원되지 않습니다.
Python ndarray를 MATLAB 배열로 변환하기
Python 함수의 출력값이 Python 버퍼 프로토콜을 구현하는 유형인 경우(예: numpy.ndarray), MATLAB에 다음 항목이 표시됩니다.
실제 Python 유형입니다.
기본 데이터입니다.
해당하는 MATLAB 변환 함수. 이 함수를 사용하여 Python 객체를 MATLAB 배열로 완전히 변환할 수 있습니다.
예를 들어, Python 함수가 다음과 같은 배열 p를 반환한다고 가정하겠습니다.
p =
Python ndarray:
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 행렬 M으로 변환합니다.
M = double(p)
M = 3×3
8 1 6
3 5 7
4 9 2
p의 Python 속성에 대한 구체적인 정보를 확인합니다.
details(p)
py.numpy.ndarray handle with properties:
T: [1×1 py.numpy.ndarray]
base: [1×1 py.NoneType]
ctypes: [1×1 py.numpy.core._internal._ctypes]
data: [1×3 py.memoryview]
dtype: [1×1 py.numpy.dtype[float64]]
flags: [1×1 py.numpy.flagsobj]
flat: [1×1 py.numpy.flatiter]
imag: [1×1 py.numpy.ndarray]
itemsize: [1×1 py.int]
nbytes: [1×1 py.int]
ndim: [1×1 py.int]
real: [1×1 py.numpy.ndarray]
shape: [1×2 py.tuple]
size: [1×1 py.int]
strides: [1×2 py.tuple]
Methods, Events, SuperclassesPython 모듈이 __doc__ 특성의 콘텐츠를 제공하는 경우, MATLAB은 이 정보로 연결됩니다.