異なるデータ型を持つ NumPy 配列の連結
異なる dtype を持つ複数の配列のデータを結合する単一の NumPy 配列を作成するのは難しい場合があります。一般的なアプローチの 1 つは concatenate() 関数を使用することですが、これにより配列全体が string などの単一のデータ型に変換される可能性があります。これは、メモリ使用量の点で非効率的になる可能性があります。
解決策: レコード配列
配列を結合する際に元のデータ型を保持するには、レコード配列の使用を検討してください。レコード配列を使用すると、それぞれが独自のデータ型を持つ名前付き列を含む構造化配列を作成できます。この方法を使用すると、Python オブジェクトの属性と同じように、名前によって個々の列にアクセスできます。
レコード配列を作成するには、numpy モジュールの rec.fromarrays() 関数を使用できます。
<code class="python">import numpy as np a = np.array(['a', 'b', 'c', 'd', 'e']) b = np.arange(5) records = np.rec.fromarrays((a, b), names=('keys', 'data'))</code>
このコードは、文字列データ型の 'keys' と整数データ型の 'data' の 2 つの列を持つ records という名前のレコード配列を作成します。
構造化配列
配列を異なる dtype と組み合わせるもう 1 つのオプションは、構造化配列を直接作成することです。構造化配列はレコード配列に似ていますが、個々の列への属性アクセスは提供しません:
<code class="python">arr = np.array([('a', 0), ('b', 1)], dtype=([('keys', '|S1'), ('data', 'i8')]))</code>
このコードは、文字列データ型の 'keys' と 'data' の 2 つの列を持つ arr という名前の構造化配列を作成します。 ' 整数データ型を使用します。
どのアプローチがより良いですか?
特定の使用例に最適なアプローチは、要件によって異なります。レコード配列は、特に名前で個々の列にアクセスする必要がある場合に使用すると便利です。属性へのアクセスが必要ない場合、構造化配列の方がメモリ使用効率が高くなります。
以上がNumPy 配列連結におけるデータ型の保持: レコード配列と構造化配列の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。