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

NumPyのissubdtype()で型階層を判定する方法 – サブタイプかどうかをTrue/Falseで確認

最初の引数が、型階層(type hierarchy)において2番目の引数と同じか、それより下位の型コードである場合に True を返したいときは、Python NumPy の numpy.issubdtype() メソッドを使用します。引数には dtype オブジェクト、または dtype に変換可能なオブジェクトを指定します。

このメソッドは、あるデータ型が別のデータ型のサブクラス(サブタイプ)に相当するかどうかを判定する際に便利です。たとえば、「この整数型は汎用的な整数型に分類されるか」「float64 は浮動小数点型の一種か」といった確認が簡単に行えます。

手順

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

import numpy as np

続いて、NumPy の issubdtype() メソッドを使って、さまざまな型の組み合わせを判定してみましょう。

print("Result...",np.issubdtype(np.float64, np.float32))
print("Result...",np.issubdtype(np.float64, np.floating))
print("Result...",np.issubdtype(np.float32, np.floating))
print("Result...",np.issubdtype('i4', np.signedinteger))
print("Result...",np.issubdtype('i8', np.signedinteger))
print("Result...",np.issubdtype(np.int32, np.integer))

実行例

import numpy as np

# 最初の引数が型階層において下位または同等の型コードである場合に True を返すには、
# Python NumPy の numpy.issubdtype() メソッドを使用します。

# 引数には dtype、または dtype に変換可能なオブジェクトを指定します
print("NumPyのissubdtype()メソッドを使用\n")
print("Result...",np.issubdtype(np.float64, np.float32))
print("Result...",np.issubdtype(np.float64, np.floating))
print("Result...",np.issubdtype(np.float32, np.floating))
print("Result...",np.issubdtype('i4', np.signedinteger))
print("Result...",np.issubdtype('i8', np.signedinteger))
print("Result...",np.issubdtype(np.int32, np.integer))

出力結果

NumPyのissubdtype()メソッドを使用

Result... False
Result... True
Result... True
Result... True
Result... True
Result... True

結果の解説

  • np.issubdtype(np.float64, np.float32)False:float64 と float32 は兄弟関係にあり、float64 は float32 のサブタイプではないためです。
  • np.issubdtype(np.float64, np.floating)True:float64 は汎用の浮動小数点型 np.floating のサブタイプです。
  • np.issubdtype(np.float32, np.floating)True:float32 も同様に np.floating に分類されます。
  • np.issubdtype('i4', np.signedinteger)True:文字列 'i4'(int32 相当)は符号付き整数型のサブタイプです。
  • np.issubdtype('i8', np.signedinteger)True:'i8'(int64 相当)も符号付き整数型に含まれます。
  • np.issubdtype(np.int32, np.integer)True:int32 は汎用の整数型 np.integer のサブタイプです。

このように issubdtype() を使うことで、具体的な dtype がより抽象的な型カテゴリ(np.floatingnp.signedintegernp.integer など)に属しているかどうかを簡潔に判定できます。文字列形式の型コード('i4'、'i8' など)もそのまま渡せる点が特徴です。

  1. Pythonでリスト内の最初の非ゼロ(0以外)の数値を見つける方法

    この記事では、Pythonを使って、与えられた数値のリストの中から最初に現れる非ゼロ(0以外)の数値を見つける方法を解説します。 リストの先頭に複数のゼロが含まれている場合などに、最初の有効な数値がどの位置にあるのかを効率的に特定するテクニックとして、2つのアプローチを紹介します。 方法1:enumerateとnextを組み合わせる まずenumerate関数を使ってリストの各要素とそのインデックスを取得し、次にnext関数を適用することで、条件を満たす最初の非ゼロ要素の位置を取得します。この方法では、ジェネレーター式を用いて簡潔に記述できるのが特徴です。 コード例 listA = [0,

  2. Pythonで文字列内の最初のユニーク文字を見つける方法

    文字列が与えられたとき、その中で最初に一度だけ出現する文字(ユニークな文字)を見つける問題を考えてみましょう。 例えば、文字列が people の場合、出現回数が1回である最初の文字は o です。この場合、そのインデックスである 2 を返します。もし該当する文字が文字列中に存在しない場合は、-1 を返します。 解法のアプローチ この問題は、以下の手順で効率的に解くことができます。 頻度マップ(辞書)を作成する 文字列内の各文字 c について処理を行う: c が頻度マップに存在しない場合は、キーとして追加し値を 1 に設定する すでに存在する場合は、そのカウントを +1 する 作成した頻