web-dev-qa-db-ja.com

NumPy整数配列のゼロをnanに置き換えます

以下にpythonスクリプトを書きました:

import numpy as np

arr = np.arange(6).reshape(2, 3)
arr[arr==0]=['nan']
print arr

しかし、私はこのエラーを受け取りました:

Traceback (most recent call last):
  File "C:\Users\Desktop\test.py", line 4, in <module>
    arr[arr==0]=['nan']
ValueError: invalid literal for long() with base 10: 'nan'
[Finished in 0.2s with exit code 1]

NumPy配列のゼロをnanに置き換える方法は?

15
Heinz

np.nanの型はfloatです。これを含む配列はこのデータ型(またはcomplexまたはobjectデータ型)も持っている必要があるため、arrをキャストする必要がある場合がありますこの値を割り当てようとします。

エラーは、文字列値'nan'は、arrのタイプに一致する整数タイプに変換できません。

>>> arr = arr.astype('float')
>>> arr[arr == 0] = 'nan' # or use np.nan
>>> arr
array([[ nan,   1.,   2.],
       [  3.,   4.,   5.]])
32
Alex Riley