NumPy配列のデータ型を確認・変更する方法 ― dtypeとastypeの使い方
NumPy配列は、Python標準のデータ型に加えて、非常に多彩なデータ型をサポートしています。配列は作成後でも必要に応じて要素のデータ型を変更でき、そのために使われるのが array.dtype と array.astype の2つの方法です。
array.dtype でデータ型を確認する
dtype は、配列内の要素が現在使用しているデータ型を取得するための属性です。次の例では、配列を宣言してそのデータ型を確認しています。
コード例
import numpy as np # NumPy配列を作成 a = np.array([21.23, 13.1, 52.1, 8, 255]) # 配列を表示 print(a) # 配列のデータ型を表示 print(a.dtype)
実行結果
上記のコードを実行すると、次の出力が得られます。
[ 21.23 13.1 52.1 8. 255. ] float64
小数を含む値で構成されたこの配列は、float64(倍精度浮動小数点数)として扱われていることがわかります。
array.astype でデータ型を変換する
astype メソッドは、既存の配列を指定したデータ型を持つ新しい配列に変換します。元の配列自体は変更されず、変換後の新しい配列が返される点に注意してください。以下の例では、同じ配列を複数の異なるデータ型へ変換しています。
コード例
import numpy as np
# NumPy配列を作成
a = np.array([21.23, 13.1, 52.1, 8, 255])
# 配列を表示
print(a)
# 配列のデータ型を表示
print(a.dtype)
# データ型を int32(整数)に変換
a_int = a.astype('int32')
print(a_int)
print(a_int.dtype)
# データ型を str(文字列)に変換
a_str = a.astype('str')
print(a_str)
print(a_str.dtype)
# データ型を complex64(複素数)に変換
a_cmplx = a.astype('complex64')
print(a_cmplx)
print(a_cmplx.dtype)
実行結果
上記のコードを実行すると、次の出力が得られます。
[ 21.23 13.1 52.1 8. 255. ] float64 [ 21 13 52 8 255] int32 ['21.23' '13.1' '52.1' '8.0' '255.0'] <U32 [ 21.23+0.j 13.1 +0.j 52.1 +0.j 8. +0.j 255. +0.j] complex64
それぞれの変換結果を見ると、int32 への変換では小数部分が切り捨てられ、str への変換では各要素が文字列(<U32)になり、complex64 への変換では虚部が 0 の複素数として表現されていることが確認できます。
まとめ
dtype で現在のデータ型を確認し、astype を使えば整数・文字列・複素数など、任意の型へ柔軟に変換できます。ただし、浮動小数点数から整数への変換時には小数部分が切り捨てられるため、意図しないデータ損失を避けるためにも、用途に応じて適切なデータ型を選択することが重要です。
-
Jupyter NotebookでNumPyの2D配列をグレースケール画像として表示する方法
Jupyter Notebook上でNumPyの2次元配列をグレースケール画像として表示したい場合、Matplotlibのimshow()関数を使うのが最も簡単な方法です。ここでは、具体的な手順とサンプルコードを紹介します。 手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 NumPyを使ってランダムなデータを作成します。 imshow()メソッドを使用し、カラーマップにgrayを指定してデータを画像として表示します。 show()メソッドを呼び出して、図を画面に表示します。 サンプルコード from matplotlib import pyplot a
-
Pythonでデータ型を文字列に変換する方法|str()関数と__str__()メソッドの使い方
Pythonでは、str()関数を使うことで、あらゆる組み込みデータ型(int、float、complex、list、tuple、dictなど)を簡単に文字列表現へ変換できます。また、ユーザー定義クラスの場合は__str__()メソッドを定義しておくことで、オブジェクトをわかりやすい文字列として出力できるようになります。組み込みデータ型を文字列に変換するstr()関数の引数に数値やリストなどのオブジェクトを渡すと、その文字列表現が文字列(str型)として返されます。>>> str(10) 10 >>> str(11.11) 11.11 >>>