检查ND阵列列中的Nan值并删除它们

时间:2013-01-25 05:31:46

标签: python loops slice bitvector multidimensional-array

编写下面的代码是为了检查Python ND-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.

有人可以告诉我为什么它不起作用,为什么我还在拿NaNs?

阵列看起来像:[99,242,122,nan,42,nan,414,................]

1 个答案:

答案 0 :(得分:1)

rwc=range(0,len(arr)) len(rwc)=len(arr)rwc = rwc[:i-1]+rwc[i+1:] irwcarrrwc = 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]) ),因此在下一次迭代中,您开始从列表中删除错误的元素。

另外我怀疑你打算做{{1}},这是另一个错误

据我了解,你试图做这样的事情:

{{1}}