PythonでリストをNumPyに変換するとき、None
が含まれる場合は型について少し注意が必要です。
型を指定しない
変換するときに、dtype
を指定しない場合はobject
になってしまいます。
>>> np.array([1, 2, None]) array([1, 2, None], dtype=object)
intを指定する
元のリストがint
なので、int
を指定しようとするとNone
がうまく変換されず、TypeErrorとなります。
>>> np.array( [1, 2, None], dtype=int) TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
floatを指定する(正しい方法)
None
が含まれる場合は、元のリストがint
の場合でもfloat
を指定すると、正しく変換できます。
>>> np.array([1, 2, None], dtype=float) array([ 1., 2., nan])
これは、NumPyのNaN
がfloat
型であることを意味し、実際に確かめることができます。
>>> type(np.nan) <class 'float'>