NumPy:【bool変換,型変換】のサンプルコード


サマリ

  • 変換
    • bool型⇔one-hotベクトル
  • np.astypeを使ったデータ型変換
    • 文字列⇔int型
    • 整数⇔float型

前提

bool型とone-hotベクトル

bool型への変換

データ作成

import numpy as np
a = np.random.randn(3,3)
print(a)
print(a.shape)
[[-0.04979643  1.41875607 -0.82755787]
 [ 0.15427139  0.94284317  0.74147436]
 [ 1.08626773  1.23793669 -0.94596466]]
(3, 3)
  • 形状(3,3)のndarray(NumPy配列)を作成
  • マイナスが3か所ある

bool型に変換

b = a<=0
#b = (a<=0) とカッコにしてもよい
print(b)
print(b.shape)
[[ True False  True]
 [False False False]
 [False False  True]]
(3, 3)
  • マイナスの箇所がTrueになった
  • bool型に変換できている

one-hotベクトルに変換する

c = b.astype(np.int8)
print(c)
print(c.shape)
[[1 0 1]
 [0 0 0]
 [0 0 1]]
(3, 3)
  • np.astypeを使う
    • bool型からone-hotベクトルに変換された
    • astypeは次項を参照

np.astype(型変換)

文字列をint型に変換

データ作成

import numpy as np
a = np.array(['2', '3'], dtype='<U11')
print(a)
print(type(a[0]))
['2' '3']
<class 'numpy.str_'>

データ型変換

b = a.astype(np.int8)
c = a.astype(int)
print(b)
print(type(b[0]))
print(c)
print(type(c[0]))
[2 3]
<class 'numpy.int8'>
[2 3]
<class 'numpy.int64'>
  • b
    • 文字列をint8に変換した
  • c
    • 文字列をint64に変換した
  • 他にnp.int32、np.uint8の指定も可能
    • uint …… unsignedの略、負の整数は扱えないので注意

整数から浮動小数点(float)に変換

データ作成

import numpy as np
a = np.arange(3)
print(a)
print(type(a[0]))
[0 1 2]
<class 'numpy.int64'>
  • int型のndarray(NumPy配列)を作成

データ型変換

b = a.astype(np.float32)
print(b)
print(type(b[0]))
[0. 1. 2.]
<class 'numpy.float32'>
  • int型からfloat型に変換された
    • 数字の後ろの「.」(小数点)がfloatを表している
  • 他にnp.float64も指定できる
    • np.float32との違いは有効桁数


Posted by futa