>>> a= np.ones(10, dtype=np.uint8) >>> a /= 10.0 >>> print a [0 0 0 0 0 0 0 0 0 0]
てな具合に0.1ではない結果になってしまう。
こんな場合は、arrayが整数型か浮動少数型か分けて処理をしたいとか、整数型だったら例外を投げるとかいう処理する必要があります。
例えば、
def normalize(arr): arr /= arr.sum()というメソッドがあったとして、これに整数型を渡すと切り捨てられてしまうので、浮動少数型に限定したい。この場合、np.issubdtypeというメソッドで型が整数か浮動少数か調べます。
def normalize(arr): if np.issubdtype(arr.dtype, np.integer): raise ValueError("arr must be float.") arr /= arr.sum()みたいな感じ。浮動少数か調べるにはnp.floatを使えばいいはず。
他に良い方法があったら教えて欲しいです。
0 件のコメント:
コメントを投稿