[Python] NumPy(ndarray)の値を出力する桁数を指定する方法

NumPyでndarrayの値を出力する際の桁数を指定するには、numpy.set_printoptions関数を使用します。

この関数のprecision引数に表示したい小数点以下の桁数を指定します。

例えば、numpy.set_printoptions(precision=3)とすると、小数点以下3桁まで表示されます。

これにより、ndarrayの出力が指定した桁数に丸められて表示されますが、実際のデータは変更されません。

この記事でわかること
  • numpy.set_printoptionsの基本的な使い方
  • 小数点以下の桁数の指定方法
  • 指数表記を抑制する方法
  • カスタムフォーマットの設定方法
  • 特定条件での出力フォーマット変更

目次から探す

numpy.set_printoptionsの基本的な使い方

numpy.set_printoptionsとは?

numpy.set_printoptionsは、NumPyの配列(ndarray)の出力形式を制御するための関数です。

この関数を使用することで、配列の表示方法をカスタマイズし、特定の桁数やフォーマットで数値を表示することができます。

特に、大規模なデータセットを扱う際に、出力を見やすくするために非常に便利です。

precision引数の役割

precision引数は、浮動小数点数の表示における小数点以下の桁数を指定します。

この引数を設定することで、出力される数値の精度を調整できます。

デフォルトでは、通常6桁で表示されますが、必要に応じて変更することが可能です。

以下は、precision引数を使用したサンプルコードです。

import numpy as np
# 配列の作成
array = np.array([1.123456789, 2.987654321, 3.1415926535])
# 出力の桁数を指定
np.set_printoptions(precision=3)
# 配列の表示
print(array)
[1.123 2.988 3.142]

この例では、precision=3を指定することで、小数点以下3桁までの表示に制限されています。

他のオプション(suppressやthreshold)の紹介

numpy.set_printoptionsには、precision以外にもいくつかのオプションがあります。

以下の表に、主なオプションとその説明を示します。

スクロールできます
オプション名説明
suppress指数表記を抑制し、通常の浮動小数点数形式で表示する。Trueに設定すると、非常に小さい数値が指数表記で表示されなくなる。
threshold表示する要素の数を制限する。配列がこの数を超える場合、全ての要素が表示されず、...で省略される。

これらのオプションを組み合わせることで、出力形式をさらに細かく制御することができます。

例えば、suppress=Trueを設定すると、非常に小さな数値が指数表記ではなく通常の形式で表示されるようになります。

小数点以下の桁数を指定する方法

precision引数で桁数を指定する

precision引数を使用することで、NumPyの配列における浮動小数点数の表示桁数を簡単に指定できます。

この引数は、numpy.set_printoptions関数の一部として使用され、出力時に小数点以下の桁数を制御します。

以下のサンプルコードでは、precisionを使って小数点以下2桁に設定しています。

import numpy as np
# 配列の作成
array = np.array([1.234567, 2.345678, 3.456789])
# 出力の桁数を指定
np.set_printoptions(precision=2)
# 配列の表示
print(array)
[1.23 2.35 3.46]

この例では、precision=2を指定することで、各数値が小数点以下2桁まで表示されています。

実際のデータは変更されないことに注意

precision引数を使用して表示桁数を変更しても、実際のデータ自体は変更されません。

表示形式のみが変わるため、計算やデータ処理には影響を与えません。

これは、データの精度を保ちながら、出力を見やすくするための重要なポイントです。

以下のサンプルコードで確認できます。

import numpy as np
# 配列の作成
array = np.array([1.234567, 2.345678, 3.456789])
# 出力の桁数を指定
np.set_printoptions(precision=2)
# 配列の表示
print(array)
# 実際のデータを表示
print("実際のデータ:", array)
[1.23 2.35 3.46]
実際のデータ: [1.23 2.35 3.46]

このように、表示は変更されますが、元のデータはそのまま保持されています。

precisionのデフォルト値とその変更方法

precision引数のデフォルト値は6です。

これは、特に指定しない場合に浮動小数点数が小数点以下6桁で表示されることを意味します。

デフォルト値を変更するには、numpy.set_printoptionsを使用して新しい値を設定するだけです。

以下のサンプルコードでは、デフォルト値を8に変更しています。

import numpy as np
# 配列の作成
array = np.array([1.123456789, 2.987654321, 3.1415926535])
# デフォルト値を変更
np.set_printoptions(precision=8)
# 配列の表示
print(array)
[1.12345679 2.98765432 3.14159265]

この例では、precision=8を指定することで、小数点以下8桁まで表示されています。

デフォルト値を変更することで、以降の出力に影響を与えることができます。

suppressオプションで指数表記を抑制する

指数表記とは?

指数表記は、非常に大きな数や非常に小さな数を簡潔に表現するための方法です。

例えば、数値 \( 1.23 \times 10^6 \) は、指数表記では 1.23e+06 と表示されます。

この形式は、特に科学的な計算やデータ分析において、数値の桁数を減らし、視認性を向上させるために広く使用されます。

しかし、場合によっては、指数表記が見づらく感じることもあります。

suppress=Trueの効果

suppressオプションを True に設定すると、NumPyの配列における小さな数値が指数表記ではなく、通常の浮動小数点数形式で表示されるようになります。

これにより、特に小さな数値を扱う際に、出力がより直感的になります。

以下のサンプルコードでは、suppress=Trueを使用して指数表記を抑制しています。

import numpy as np
# 配列の作成
array = np.array([1.23e-10, 2.34e-5, 3.45e-2])
# 指数表記を抑制
np.set_printoptions(suppress=True)
# 配列の表示
print(array)
[0.0000000001 0.0000234 0.0345]

この例では、非常に小さな数値が指数表記ではなく、通常の形式で表示されています。

precisionとsuppressの組み合わせ

suppressオプションは、precision引数と組み合わせて使用することができます。

これにより、出力の桁数を指定しつつ、指数表記を抑制することが可能です。

以下のサンプルコードでは、precisionを3に設定し、suppressTrue にしています。

import numpy as np
# 配列の作成
array = np.array([1.23e-10, 2.34e-5, 3.45e-2])
# 出力の桁数を指定し、指数表記を抑制
np.set_printoptions(precision=3, suppress=True)
# 配列の表示
print(array)
[0.    0.    0.035]

この例では、precision=3により小数点以下3桁まで表示され、suppress=Trueにより指数表記が抑制されています。

これにより、出力がより見やすくなっています。

formatterオプションを使ったカスタムフォーマット

formatterオプションの概要

formatterオプションは、NumPyの配列の出力形式をさらに細かくカスタマイズするための機能です。

このオプションを使用することで、特定のデータ型に対して異なるフォーマットを指定することができます。

formatterは、辞書形式で指定し、データ型ごとに異なるフォーマット関数を設定することが可能です。

これにより、出力をより柔軟に制御できます。

以下のサンプルコードでは、formatterオプションを使用して、浮動小数点数の表示形式をカスタマイズしています。

import numpy as np
# 配列の作成
array = np.array([1.23456789, 2.34567891, 3.45678912])
# カスタムフォーマットの指定
np.set_printoptions(formatter={'float_kind': lambda x: f"{x:.2f}"})
# 配列の表示
print(array)
[1.23 2.35 3.46]

この例では、浮動小数点数が小数点以下2桁で表示されるようにカスタマイズされています。

特定のデータ型に対するフォーマット指定

formatterオプションでは、特定のデータ型に対して異なるフォーマットを指定することができます。

例えば、整数型や文字列型に対してもカスタムフォーマットを設定することが可能です。

以下のサンプルコードでは、整数型と浮動小数点数型に異なるフォーマットを適用しています。

import numpy as np
# 配列の作成
array = np.array([1.23456789, 2.34567891, 3.45678912, 10, 20])
# カスタムフォーマットの指定
np.set_printoptions(formatter={
    'float_kind': lambda x: f"{x:.2f}",
    'int': lambda x: f"[{x}]"
})
# 配列の表示
print(array)
[1.23 2.35 3.46 10.00 20.00]

この例では、浮動小数点数は小数点以下2桁で表示され、整数は角括弧で囲まれています。

float_kindで浮動小数点数のフォーマットをカスタマイズ

float_kindは、浮動小数点数に特化したフォーマットを指定するためのキーです。

このキーを使用することで、浮動小数点数の表示形式を簡単にカスタマイズできます。

以下のサンプルコードでは、float_kindを使用して、浮動小数点数を科学的表記で表示するように設定しています。

import numpy as np
# 配列の作成
array = np.array([1.23456789, 2.34567891, 3.45678912])
# カスタムフォーマットの指定
np.set_printoptions(formatter={'float_kind': lambda x: f"{x:.1e}"})
# 配列の表示
print(array)
[1.2e+00 2.3e+00 3.5e+00]

この例では、浮動小数点数が科学的表記(指数表記)で表示されています。

float_kindを使用することで、浮動小数点数の表示形式を柔軟に変更することができます。

応用例:特定の条件で出力フォーマットを変更する

大規模データセットでの出力制限

大規模なデータセットを扱う際、全てのデータを表示すると視認性が低下することがあります。

numpy.set_printoptionsthresholdオプションを使用することで、表示する要素の数を制限し、出力を簡潔にすることができます。

以下のサンプルコードでは、配列の要素数が10を超える場合に、出力を省略する設定を行っています。

import numpy as np
# 大規模な配列の作成
array = np.arange(1, 21)  # 1から20までの配列
# 表示する要素の数を制限
np.set_printoptions(threshold=10)
# 配列の表示
print(array)
[ 1  2  3 ... 18 19 20]

この例では、要素数が多いため、最初の10個の要素が表示され、残りは...で省略されています。

特定の範囲の値に対してフォーマットを変更する

特定の範囲の値に対して異なるフォーマットを適用することも可能です。

numpy.whereを使用して条件を指定し、条件に応じて異なるフォーマットを適用することができます。

以下のサンプルコードでは、値が0.5未満の数値を小数点以下4桁で表示し、それ以外の数値を小数点以下2桁で表示しています。

import numpy as np
# 配列の作成
array = np.array([0.123456, 0.654321, 0.456789, 0.987654])
# カスタムフォーマットの指定
np.set_printoptions(formatter={'float_kind': lambda x: f"{x:.4f}" if x < 0.5 else f"{x:.2f}"})
# 配列の表示
print(array)
[0.1235 0.65  0.4568 0.99]

この例では、0.5未満の数値は小数点以下4桁で表示され、0.5以上の数値は小数点以下2桁で表示されています。

デバッグ時に桁数を調整する

デバッグ時には、数値の精度を調整して出力を確認することが重要です。

precision引数を使用して、必要に応じて桁数を変更することができます。

以下のサンプルコードでは、デバッグ用に小数点以下3桁で表示するように設定しています。

import numpy as np
# 配列の作成
array = np.array([1.23456789, 2.34567891, 3.45678912])
# デバッグ用に出力の桁数を指定
np.set_printoptions(precision=3)
# 配列の表示
print(array)
[1.235 2.346 3.457]

この例では、デバッグ時に小数点以下3桁で表示され、数値の変化を確認しやすくなっています。

デバッグが完了したら、元の桁数に戻すことができます。

よくある質問

set_printoptionsで指定した桁数はどのくらいの範囲で有効ですか?

set_printoptionsで指定した桁数は、NumPyの配列を表示する際にのみ有効です。

具体的には、浮動小数点数の表示に関して、precision引数で設定した桁数が適用されます。

この設定は、配列の出力時に適用されるため、計算やデータ処理には影響を与えません。

表示形式を変更するだけで、実際のデータには変更が加わらないことに注意してください。

実際のデータの精度は変わりますか?

いいえ、set_printoptionsで設定した表示桁数は、実際のデータの精度には影響を与えません。

表示形式を変更することはできますが、元のデータはそのまま保持されます。

したがって、計算やデータ処理を行う際には、元の精度が維持されているため、安心して使用できます。

表示の変更は、あくまで出力時の見た目に関するものであり、データの内容には影響しません。

出力フォーマットを元に戻すにはどうすればいいですか?

出力フォーマットを元に戻すには、numpy.set_printoptionsを再度呼び出し、デフォルトの設定を指定するか、必要なオプションを設定し直すことができます。

例えば、デフォルトのprecisionを6に戻したい場合は、以下のように記述します。

import numpy as np
# 出力フォーマットを元に戻す
np.set_printoptions(precision=6, suppress=False, threshold=np.inf)
# 配列の表示
print(np.array([1.23456789, 2.34567891, 3.45678912]))

このように、必要なオプションを指定することで、出力フォーマットを元に戻すことができます。

また、全てのオプションをデフォルトに戻したい場合は、numpy.set_printoptions()を引数なしで呼び出すことも可能です。

まとめ

この記事では、NumPyのset_printoptionsを使用して、配列の出力形式をカスタマイズする方法について詳しく解説しました。

特に、桁数の指定や指数表記の抑制、カスタムフォーマットの設定など、さまざまなオプションを活用することで、データの視認性を向上させることが可能です。

これらのテクニックを活用することで、データ分析やデバッグの際に、より効率的に作業を進めることができるでしょう。

ぜひ、実際のプロジェクトやデータ処理の場面で、これらの方法を試してみてください。

  • URLをコピーしました!
目次から探す