ホームページ  >  記事  >  バックエンド開発  >  可変長の Python リストをプレースホルダーを含む高密度の NumPy 配列に変換する方法

可変長の Python リストをプレースホルダーを含む高密度の NumPy 配列に変換する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 22:03:03526ブラウズ

How to Convert Variable-Length Python Lists to a Dense NumPy Array with Placeholders?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。