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

【Python・NumPy】maximum_sctype()で入力と同じ種類の最高精度のスカラー型を取得する方法

入力と同じ種類(kind)の中で最高精度のスカラー型を返すには、PythonのNumPyが提供するmaximum_sctype()メソッドを使用します。引数には入力データ型を指定します。dtypeオブジェクトのほか、intstrといった組み込み型、'f4'のような型文字列など、dtypeへ変換可能なオブジェクトであれば何でも渡せます。

たとえば整数型を渡せばそのプラットフォームで利用可能な最大の整数型(通常はint64)が、単精度浮動小数点数 'f4' を渡せば float128 が返される、というように、同じカテゴリ内で最も精度の高い型が得られます。

手順

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

import numpy as np

次に、NumPyのmaximum_sctype()メソッドを使い、入力と同じ種類の最高精度のスカラー型を取得して表示します。

print("Result...", np.maximum_sctype(int))
print("Result...", np.maximum_sctype(np.uint8))
print("Result...", np.maximum_sctype(complex))
print("Result...", np.maximum_sctype(str))
print("Result...", np.maximum_sctype('f4'))
print("Result...", np.maximum_sctype('i2'))
print("Result...", np.maximum_sctype('i4'))
print("Result...", np.maximum_sctype('i8'))

サンプルコード

import numpy as np

# 入力と同じ種類の最高精度のスカラー型を返すには、
# Python NumPyのmaximum_sctype()メソッドを使用します。
# 引数は入力データ型です。dtypeオブジェクト、
# またはdtypeへ変換可能なオブジェクトを指定できます。
print("NumPyのmaximum_sctype()メソッドを使用\n")

# 最高精度のスカラー型を取得
print("Result...", np.maximum_sctype(int))
print("Result...", np.maximum_sctype(np.uint8))
print("Result...", np.maximum_sctype(complex))
print("Result...", np.maximum_sctype(str))
print("Result...", np.maximum_sctype('f4'))
print("Result...", np.maximum_sctype('i2'))
print("Result...", np.maximum_sctype('i4'))
print("Result...", np.maximum_sctype('i8'))

実行結果

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

Result... <class 'numpy.int64'>
Result... <class 'numpy.uint64'>
Result... <class 'numpy.complex256'>
Result... <class 'numpy.str_'>
Result... <class 'numpy.float128'>
Result... <class 'numpy.int64'>
Result... <class 'numpy.int64'>
Result... <class 'numpy.int64'>

結果のポイント

  • int'i2' / 'i4' / 'i8' のような符号付き整数系を渡すと、環境が対応する最大の符号付き整数型である numpy.int64 が返されます。
  • np.uint8(符号なし整数)を渡した場合は、同じく符号なし整数系の最大精度である numpy.uint64 が返されます。
  • 'f4'(単精度浮動小数点)からは numpy.float128 が、complex からは numpy.complex256 が返され、それぞれの種類内で最高精度の型が得られていることがわかります。

  1. Pythonで連続文字の制限を満たす同サイズの文字列を数えるプログラム

    小文字の英字だけで構成された文字列 s と整数 k が与えられます。このとき、次の3つの条件をすべて満たす文字列の総数を求めるのが今回の課題です。 s と同じ長さである 辞書順で s 以下である 同じ文字が連続する回数が k 以下である(k を超える連続は不可) 答えは非常に大きくなる可能性があるため、10^9 + 7 で割った余りとして返します。 たとえば入力が s = app、k = 2 のとき、条件を満たす文字列は 405 個あるため、出力は 405 になります。 解法の考え方:桁DP 「指定した文字列以下の文字列を数え上げる」タイプの問題では、桁DP(デジットDP)と呼ばれる手法が

  2. Pythonのreturnステートメント徹底解説!関数から値を返す方法

    returnステートメントとは Pythonにおける return [式] ステートメントは、関数の処理を終了させ、必要に応じて呼び出し元(caller)へ式の結果を返すための構文です。 重要なポイントとして、引数を指定しない return ステートメントは return None と同じ意味になります。つまり、明示的に何も返さない関数は、暗黙的に None を返していることになります。 基本的な構文 def 関数名(引数1, 引数2): # 処理 return 式 サンプルコード これまでの例では、関数が値を一切返していませんでした。次のように記述すると、関数から値を返す