最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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 (Version 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 入力引数の型 —
1N 列のベクトル

結果の 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 配列 (Version 2.7 のみ)

unicode

logical

memoryview

char ベクトル
string スカラー

str

cell ベクトル

tuple

行列や多次元配列を渡す

実数または logical 配列を Python 関数に渡す場合、MATLAB はデータを Python memoryview オブジェクトに自動的に変換します。Python 関数の出力が、Python バッファー プロトコルを実装していて、実数または logical である場合、MATLAB によって以下が表示されます。

  • 実際の Python 型

  • 基となるデータ

  • 対応する MATLAB 変換関数。この関数を使用して、Python オブジェクトを MATLAB 配列に完全に変換します。

たとえば、次の値をもつ pyType 型の変数を返すモジュール pyModule の 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 ではサポートされていません。サポートされていない MATLAB 型を参照してください。

引数エラーのトラブルシューティング

Python 関数 には特定の Python 多次元配列型が必要である場合、MATLAB は、続行するためのヒントを含む メッセージを表示します。問題の原因が、行列または多次元配列を引数として渡すことである場合は、以下を実行します。

  1. Python 関数のドキュメントを確認し、想定される引数の型を調べる。

  2. MATLAB でその型の Python オブジェクトを作成し、それを Python 関数に渡す。

たとえば、次のコードがエラーを返すとします。

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

pyfunc のドキュメントで、想定される型が pyType であると指定されている場合、次の変換を試します。

py.pyfunc(pyType(a))

エラーが解決しない場合は、Python 例外の追加情報を確認して根本原因を特定します。

関連する例

詳細