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]])

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

公開日

広告