Python
 Computer >> コンピューター >  >> プログラミング >> Python

【NumPy】promote_types()で両方の型を安全にキャストできる最小サイズのデータ型を取得する方法


numpy.promote_types()メソッドは、type1とtype2の両方を安全にキャストできる、最小のサイズと最小のスカラー種類を持つデータ型を返します。戻り値はプロモート(昇格)されたデータ型であり、常にネイティブなバイト順で返される点が特徴です。第1引数には最初のデータ型、第2引数には2番目のデータ型を指定します。

手順

まず、必要なライブラリをインポートします。

import numpy as np

続いて、Numpyのpromote_types()メソッドを使って動作を確認してみましょう。

print("Result...",np.promote_types('f4', 'f8'))
print("Result...",np.promote_types('i8', 'f4'))
print("Result...",np.promote_types('>i8', '<c8'))
print("Result...",np.promote_types('i4', 'S8'))
print("Result...",np.promote_types(np.int32, np.int64))
print("Result...",np.promote_types(np.float64, complex))
print("Result...",np.promote_types(complex, float))

サンプルコード

import numpy as np

# numpy.promote_types()メソッドは、type1とtype2の両方を安全に
# キャストできる、最小のサイズと最小のスカラー種類を持つデータ型を返します。

print("Numpyのpromote_types()メソッドで確認\n")
print("Result...",np.promote_types('f4', 'f8'))
print("Result...",np.promote_types('i8', 'f4'))
print("Result...",np.promote_types('>i8', '<c8'))
print("Result...",np.promote_types('i4', 'S8'))
print("Result...",np.promote_types(np.int32, np.int64))
print("Result...",np.promote_types(np.float64, complex))
print("Result...",np.promote_types(complex, float))

出力結果

Numpyのpromote_types()メソッドで確認

Result... float64
Result... float64
Result... complex128
Result... |S11
Result... int64
Result... complex128
Result... complex128

結果の解説

'f4'(float32)と'f8'(float64)を渡した場合はfloat64が返されます。これは、両方の値を情報を失わずに表現できる最小のデータ型がfloat64であるためです。同様に、int32とint64の組み合わせではint64が、float64とcomplexの組み合わせではcomplex128が返されます。

また、ビッグエンディアンの'>i8'とリトルエンディアンの'<c8'のようにバイト順が異なる型を渡した場合でも、complex128へと適切に昇格されます。文字列型'S8'と整数型'i4'の組み合わせでは|S11が返され、文字列として安全に扱えるサイズへと拡張されていることがわかります。


  1. Pythonにおけるリスト・シーケンス・スライスの違いを徹底解説

    Pythonを学んでいると「リスト」「シーケンス」「スライス」という用語が頻繁に登場します。これらは似た文脈で使われるため混同されがちですが、それぞれ役割と意味が異なります。本記事では、3つの概念の違いをわかりやすく整理して解説します。 リストとシーケンスの関係:包含関係にある まず押さえておきたいのは、「リストはシーケンスの一種だが、シーケンスのすべてがリストとは限らない」という点です。 シーケンス(sequence)とは、特定のデータ型の名称ではなく、シーケンスプロトコル(シーケンスインターフェース)を満たす型の総称です。具体的には、以下のような性質を持つ型がシーケンスに分類されます。

  2. Pythonのデータ型と型変換をわかりやすく解説

    この記事では、Pythonにおける主要なデータ型の種類と、それぞれの使い方、そしてデータ型同士を変換する方法について詳しく解説します。 Pythonの組み込みデータ型一覧 Pythonでは変数を作成・宣言する際に、さまざまなデータ型を持たせることができます。Pythonには以下のような組み込みデータ型が用意されています。 str(文字列) int、float、complex(数値) list、tuple(シーケンス) dict(辞書) set(集合) bool(ブール値) bytes、bytearray(バイナリ) それでは、各データ型の特徴と作成方法を順番に見ていきましょう。 文字列型: