このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
MATLAB から Python へのデータ型のマッピング
Python® 関数を呼び出す際、MATLAB® は MATLAB データを、Python 言語に対してデータを最も適切に表す型に変換します。
スカラー値を Python に渡す
MATLAB 入力引数の型 — | 結果の Python | 例 |
---|---|---|
|
| MATLAB での Python 数値変数の使用 |
|
| z = complex(1,2); py.cmath.polar(z) ans = Python tuple with no properties. (2.23606797749979, 1.1071487177940904) |
|
| |
|
| |
|
| |
|
| |
|
| MATLAB での Python str 変数の使用 |
|
| py.list({string(missing),'Value'}) ans = Python list with no properties. [None, 'Value'] |
|
| |
構造体 |
| MATLAB での Python dict 変数の使用 |
Python オブジェクト — |
| |
Python 関数専用の関数ハンドル |
| Python 関数 map への Python 関数の受け渡し |
ベクトルを Python に渡す
MATLAB 入力引数の型 — | 結果の Python 型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 より大きい値を含む |
|
|
|
行列と多次元配列を Python に渡す
Python 言語は MATLAB 配列に格納されたデータなど、メモリ バッファーにアクセスするためのプロトコルを提供します。MATLAB は、この Python バッファー プロトコルを MATLAB 配列に対して実装するため、データをコピーしなくても、MATLAB と同じプロセスで実行されている Python コードから MATLAB 配列を直接読み取ることができます。
多くの Python 関数は、ネイティブな Python 型に変換せずに、Python から MATLAB 配列を直接使用します。一部の関数では、numpy.ndarray
などの特定の型が必要になる場合や、配列内のデータが変更される場合があります。これらの関数は MATLAB 配列を受け入れて、データを必要な型にコピーする場合があります。他の関数では、必要な型を渡さないとエラーを表示する場合もあります。これらの関数にデータを渡すには、まず、MATLAB データから必要な Python 型を作成して、それを Python 関数に渡します。この例では、numpy.array
型のデータ型を必要とする Python 関数に渡すための p
配列を作成します。
p = py.numpy.array(magic(3))
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.
MATLAB スパース配列は、Python ではサポートされていません。サポートされていない MATLAB 型を参照してください。
引数エラーのトラブルシューティング
Python 関数に numpy.ndarray
など特定の Python 多次元配列型が必要である場合、MATLAB は、続行するためのヒントを含むメッセージを表示します。問題の原因が、行列または多次元配列を引数として渡すことである場合は、以下を実行します。
Python 関数のドキュメントを確認し、想定される引数の型を調べる。
MATLAB でその型の Python オブジェクトを作成し、それを Python 関数に渡す。
たとえば、次のコードがエラーを返すとします。
a = [1 2; 3 4]; py.pyfunc(a)
pyfunc
のドキュメントで、想定される型が numpy.ndarray
であると指定されている場合、次の変換を試します。
py.pyfunc(numpy.ndarray(a))
エラーが解決しない場合は、Python 例外の追加情報を確認して根本原因を特定します。
Python 型から MATLAB 型への自動変換
MATLAB は Python 関数から返された以下のデータ型を自動的に MATLAB 型に変換します。他の型を変換するには、Python 型から MATLAB 型への明示的な変換を参照してください。
Python に表示される Python の戻り値の型 | 結果の MATLAB の型 — スカラー |
---|---|
|
|
| 複素数 |
|
|
|
|
Python のその他すべての型 — | Python オブジェクト — |
Python 型から MATLAB 型への明示的な変換
Python 関数の出力が、numpy.ndarray
などの Python バッファー プロトコルを実装していて、それが数値または logical である場合、MATLAB によって以下が表示されます。
実際の Python 型
基となるデータ
対応する MATLAB 変換関数。この関数を使用して、Python オブジェクトを MATLAB 配列に完全に変換します。
以下の 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, /) Return str(self). d = py.datetime.date(...
int32(2020),int32(3),int32(4));
char(d) ans = '2020-3-04' |
| 数値関数: | |
logical | ||
|
| |
任意の形式の | 数値関数: | MATLAB での Python 数値変数の使用。たとえば、Python の整数配列型を MATLAB で使用します。 |
|
| MATLAB での Python list 変数の使用 |
マッピング プロトコル (例: |
| MATLAB での Python dict 変数の使用 |
たとえば、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.
次のように入力して、これを MATLAB 行列 P
に変換できます。
P = double(p)
P = 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, Superclasses
Python モジュールが __doc__
属性でコンテンツを提供する場合、MATLAB はその情報にリンクします。
ディクショナリのキーとして Python オブジェクトを使用しない
Python オブジェクトを、MATLAB 関数 dictionary
にキー引数として渡すことや、関数 keyMatch
に入力として渡すことはできません。
サポートされていない MATLAB 型
以下の MATLAB 型は、Python ではサポートされていません。
多次元の
char
またはcell
配列構造体配列
スパース配列
categorical
型、
table
型、
containers.Map
型、
datetime
型MATLAB オブジェクト
meta.class
(py
.class
)