numpy.ndarray
複雑な整数値を保持するオブジェクトを作成したいと考えています。NumPy には複雑なサポートが組み込まれていますが、浮動小数点形式 (float
およびdouble
) のみです。たとえば、ndarray
withを作成できますが、類似の はありません。8 ビットまたは 16 ビットの整数を使用して表される複雑な値を保持する配列を作成できるようにしたいと考えています。dtype='cfloat'
dtype='cint16'
誰かがそのようなサポートについて問い合わせた2007 年のこのメーリング リストの投稿を見つけました。dtype
彼らが推奨した唯一の回避策は、整数のペアを保持する new を定義することでした。これは、各配列要素を 2 つの値のタプルとして表しているように見えますが、結果のデータ型を算術関数とシームレスに機能させるために他にどのような作業を行う必要があるかは明確ではありません。
また、NumPyへのユーザー定義型の登録に基づく別のアプローチも検討しました。C API を使用してこれをセットアップしても、問題なく動作する場合は問題ありません。ただし、型記述子構造体のドキュメントはkind
、型のフィールドが符号付き/符号なし整数、浮動小数点、および複雑な浮動小数点数値型のみをサポートしていることを示唆しているようです。複雑な整数型を定義しようとしてどこにでも行けるかどうかは明らかではありません。
機能する可能性のあるアプローチに関する推奨事項はありますか?
編集:もう1つ。どのスキームを選択しても、コピーを実行せずに既存の複素整数バッファーをラップできる必要があります。つまり、PyArray_SimpleNewFromData()
最初にバッファのコピーを作成することなく、バッファを Python に公開するために使用できるようにしたいと考えています。バッファーは既にインターリーブされた実数/虚数形式であり、int8_t
またはの配列のいずれかになりますint16_t
。