Python掩码数组使用np.array生成NaN

问题描述 投票:0回答:1

我试图选择较大网格的子集来执行有限元分析以在两个数组之间进行迭代;一个蒙面数组和一个未屏蔽的数组,但我遇到了使用np.arrays时从掩码中出现的NaN问题。我最初在这里使用掩码试图避免NaN问题,包括NaN == NaN(False)等......但是当与np.arrays一起使用时,掩码本身似乎正在创建NaN!

坐标数组迭代:

array = np.array(list(np.arange(5))*5).reshape(5,5)
big_array =  np.array([array,array,array])

在坐标数组上应用蒙版:

mask1 = np.ma.masked_array(big_array, mask = (big_array>2))
mask2 = np.ma.masked_array(big_array, mask = (big_array>3))

迭代坐标数组,用于屏蔽与未屏蔽的比较:

for i in range(5):
    for j in range(5):
            array_group = np.array([ big_array[0,i,j], big_array[1,i,j] ]) 
            array_group2 = np.array([ mask1[0,i,j], mask2[1,i,j] ]) 
            print array_group  

^^没有来自array_group的NaN但是.. ^^^

        print array_group2  

这里为屏蔽的array_group2显示NaN

python nan masked-array
1个回答
0
投票

在您的数据中,您的mask1输出:

[[[0 1 2 -- --]
  [0 1 2 -- --]
  [0 1 2 -- --]
  [0 1 2 -- --]
  [0 1 2 -- --]]

 [[0 1 2 -- --]
  [0 1 2 -- --]
  [0 1 2 -- --]
  [0 1 2 -- --]
  [0 1 2 -- --]]

 [[0 1 2 -- --]
  [0 1 2 -- --]
  [0 1 2 -- --]
  [0 1 2 -- --]
  [0 1 2 -- --]]]

小破折号是掩盖的数据,导致nan值出现。至于如何解决这个问题...我相信这取决于你想如何处理这些数据:将这些破折号替换为0,False,删除它们......等等。

© www.soinside.com 2019 - 2024. All rights reserved.