Python 可変長リストを高密度 NumPy 配列に効率的に変換する
可変長 Python リストを NumPy 配列に直接変換した結果「オブジェクト」型の配列内にありますが、これは望ましくない可能性があります。あるいは、np.array(v, dtype=np.int32) を使用して特定の型を強制しようとすると、配列内にシーケンスが存在するため例外が発生します。
したがって、次の密な NumPy 配列を作成するには、欠損値をプレースホルダーで埋めるときに特定のデータ型 (例: int32) を使用するには、 itertools.zip_longest 関数を利用できます。
たとえば、入力シーケンス v = [[1], [1, 2] を考慮します。 ]]、プレースホルダー 0 で itertools.zip_longest を使用すると、次のように高密度の NumPy 配列を効率的に取得できます。
<code class="python">import itertools np.array(list(itertools.zip_longest(*v, fillvalue=0))).T</code>
これにより、目的の出力が生成されます。
array([[1, 0], [1, 2]])
注Python 2 の場合は、代わりに itertools.izip_longest を使用してください。
以上が可変長の Python リストをプレースホルダーを含む高密度の NumPy 配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。