Pythonでブール値を数値に変換する

Pythonでブール値(TrueとFalse)を数値に変換します。

目次

  1. Pythonのブール値と数値の対応
  2. ブール値から数値への変換例
  3. NumPyの行列要素のブール値を数値に変換する

Pythonのブール値と数値の対応

Pythonのブール値を数値として扱うと、Trueは1として、Falseは0として扱われます。

intメソッドを使うと、boolからintに変換できます。

d = int(b)
変数 内容
b bool TrueまたはFalse。
d int 1または0。

intメソッドには、文字列を整数に変換する機能もあります。

ブール値から数値への変換例

TrueとFalseを変換してみました。

>>> type(True)
<class 'bool'>
>>> int(True)
1
>>> type(int(True))
<class 'int'>

>>> type(False)
<class 'bool'>
>>> int(False)
0
>>> type(int(False))
<class 'int'>

型が変わってますね。

NumPyの行列要素のブール値を数値に変換する

NumPyの行列(ndarray)の場合はどうなるでしょうか。

単純にintメソッドを使うとエラーになります。

>>> import numpy as np
>>> a = np.array([[True, False],[False, True]])
>>> a
array([[ True, False],
       [False,  True]])

>>> int(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: only size-1 arrays can be converted to Python scalars

intメソッドの戻り値がスカラーだからだめよということですね。

ndarrayに対しては、代わりにastypeメソッドを使います。

aar_t = numpy.ndarray.astype(dtype, [order], [casting], [subok], [copy])
変数 内容
dtype srt, dtype 変換先の型。
order str 省略可。既定値は'K'。メモリレイアウトの指定。
casting str 省略可。既定値は'unsafe'。型キャストのタイプ。
subok bool 省略可。既定値はTrue。
copy bool 省略可。既定値はTrue。ndarrayをコピーするかどうか。
aar_t ndarray 変換後のndarray。
>>> import numpy as np
>>> a = np.array([[True, False],[False, True]])
>>> a
array([[ True, False],
       [False,  True]])

>>> b = a.astype(np.int)
>>> b
array([[1, 0],
       [0, 1]])

要素毎に変換されました。

広告

Pythonカテゴリの投稿