我试图选择一个更大的网格的子集来执行有限元分析,以在两个数组之间进行迭代。有遮罩的数组和无遮罩的数组,但我遇到了使用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
NaN在此处显示为被屏蔽的array_group2
在您的数据中,您的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,错,删除它们……等等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句