2

私はmatplotlibcvs2rec関数を使用して国勢調査データを読み込んでいます-正常に動作すると、素晴らしいndarrayが得られます。

しかし、すべての値が「none」であり、dtype | 04である列がいくつかあります。これは、Atpy「TypeError:NoneTypeのオブジェクトにlen()がありません」にアクセスしたときに問題が発生します。「9999」などがありません。実配列をATPYに渡しており、MASKを変換しないため、この場合、マスクは機能しません。numpyのPut関数は、値を変更するための最良の方法である値がないと機能しません。ある種のブール配列が進むべき道だと思いますが、それを機能させることはできません。

したがって、none値および/または初期化されていないnumpy配列を「9999」または他の再コード化のようなものに変更するための良い/高速な方法は何ですか?マスキングなし。

ありがとう、

マシュー

4

2 に答える 2

3

この問題の解決策は次のとおりですが、データがレコード配列の場合は、配列全体ではなく、列にのみこの操作を適用する必要があります。

import numpy as np
# initialise some data with None in it
a = np.array([1, 2, 3, None])
a = np.where(a == np.array(None), 9999, a)

Noneこれを機能させるには、numpy配列にキャストする必要があることに注意してください

于 2011-08-12T04:01:56.673 に答える
0

計算を行うときにマスク配列を使用できます。配列をATPYに渡す場合、マスク配列のfilled(9999)メソッドを呼び出して、マスク配列を通常の配列に変換し、無効な値を9999に置き換えることができます。

于 2011-08-12T21:35:17.820 に答える