2017-12-25 16 views
0

2つの配列間を反復処理するために、より大きなグリッドのサブセットを選択して有限要素解析を実行しようとしています。マスクされた配列とマスクされていない配列がありますが、np.arraysを使用すると、マスクから出現するNaNの問題が発生しました。私はもともとここでマスクを使用してを避けて NaN == NaN(False)などのNaN問題を回避しましたが、マスク自体はnp.arraysと併用するとNaNを作成しているようです!np.arrayを使用してNaNを生成するPythonマスクされた配列

反復処理する配列座標:

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)) 

マスクされていない比較対マスクされたためにアレイを座標上に反復:array_groupから

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 

^^なしのNaNしかし.. ^^^

 print array_group2 

マスクされた配列_group2のNaNが表示されますあなたのデータで

答えて

0

、あなたのmask1出力RE:

[[[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、削除してください。

+0

はいダッシュはナンが現れるマスクですが、マスクがnp.arrayの繰り返しを処理できないのはなぜですか?私はそのデータが全体で0,0の座標として解釈されるので、ゼロまたは整数で置き換えられません。私は配列の形状がグリッド間で同じである必要があるので、エントリを削除することはできません。私はマスクが単純に基本的な繰り返しを通して自分自身を維持することを望んでいた –

+0

私が言っていたように:マスクされた価値に遭遇したらあなたがしたいことはあなた次第です。あなたはそれについて何も言いませんでした、そして/またはそこにいかに行くか。 – IMCoins

関連する問題