0

以下のコードは、PythonND-Array列のNaN値をチェックするために作成されました。temparr1またはtemparr2のいずれかにNaNがある場合、対応する行を両方から削除します。問題は、それが機能していないように見えることです。手伝ってくれませんか。

        temparr1=arr[index[indexkey]][:]// We get a column from arr, an nd-array of size 0 to 9470
        temparr2=arr[index[secondIndexKey]][:]// Same as above, but with the next column
        rwc=range(0,len(arr)) We get a bit vector of a sort to check.
        for i in range(0,len(arr)):
            if(isnan(temparr1[i]) or isnan(temparr2[i]) ):
                rwc = rwc[:i-1]+rwc[i+1:] // Remove the value from the bit Vector for a NaN value in the arrays.
                print i
        temparr1 = []
        temparr2 = []
        for i in rwc:
            temparr1.append(arr[index[indexkey]][i])
            temparr2.append(arr[index[secondIndexKey]][i])// Extract the data for the corresponding values in RWC and get them into the temparrs.

なぜそれが機能しないのか、なぜ私はまだNaNを取得しているのか誰かに教えてもらえますか?

配列は次のようになります:[99,242,122、nan、42、nan、414、................]

4

1 に答える 1

1

rwc=range(0,len(arr))を取得した後len(rwc)=len(arr)、その行では、との同じインデックスであるrwc = rwc[:i-1]+rwc[i+1:]ことが期待されます。irwcarr

ただし、実行rwc = rwc[:i-1]+rwc[i+1:]すると、長さが短い(len(rwc) = len(arr) -2)のリストが表示されるため、次の反復中に、リストから間違った要素を削除し始めます。

また、あなたがやろうとしていたのではないかと思いますがrwc = rwc[:i]+rwc[i+1:]、これは別のバグです

私が理解している限り、あなたはこのようなことをしようとしました:

X=arr[index[indexkey]]
Y=arr[index[secondIndexKey]]

temparr1 = []
temparr2 = []
for i in range(len(X)):  #I assume len(X)=len(Y)
    if not (isnan(X[i]) or isnan(Y[i])):
        temparr1.append(X[i])
        temparr2.append(Y[i])
于 2013-01-25T05:50:31.587 に答える