2017-06-29 12 views
0

別の配列の別の配列のすべての出現の同じ位置に与えられた数を入れたいと思います。他の配列の別の配列のすべての出現の同じ位置に与えられた数字をどのように置くか?

私が言っていることを理解するには、私が望むことをする単純な機能を作って、あなたに実行を示しています。しかし、

私の質問です:すでにnumpyのようなモジュールにコマンドがありますか?

機能

def swap(tab1,tab2): 
    n, m = tab1.shape 
    for i in range(n): 
     for j in range(m): 
      if tab1[i,j]==1.: 
       tab2[i,j]=2. 
    return tab2 

実行

tab1 = np.array([[0,1.,0],[1.,1.,1.],[0,1.,0]]) 
tab2 = np.array([[1.,1.,0],[1.,0.,1.],[0,1.,1.]]) 

tab1 

array([[ 0., 1., 0.], 
     [ 1., 1., 1.], 
     [ 0., 1., 0.]]) 

tab2 

array([[ 1., 1., 0.], 
     [ 1., 0., 1.], 
     [ 0., 1., 1.]]) 

saw(tab1,tab2) 

array([[ 1., 2., 0.], 
     [ 2., 2., 2.], 
     [ 0., 2., 1.]]) 
+0

結果は位置の2 [1,1]を持っているか来ますか? –

+0

私の質問を変更しました申し訳ありませんが、よく説明されていません。私は私の機能が何をするモジュールをしたい。私はそれが奇妙であることを知っている。 –

+0

あなたの質問は非常に混乱しています。 tab1が[1,1]の位置に1を持ち、tab2が[1,1]の位置に0を持つ場合、どのように結果が同じ位置に2つありますか? –

答えて

2

numpyのは、この種のものではかなり良いです。 np.whereと空想的な索引付けは次のように使用できます。

tab2[np.where(tab1==1.)] = 2. 

デモンストレーション:

>>> import numpy as np 
>>> tab1 = np.array([[0,1.,0],[1.,1.,1.],[0,1.,0]]) 
>>> tab2 = np.array([[1.,1.,0],[1.,0.,1.],[0,1.,1.]]) 
>>> tab2[np.where(tab1==1.)] = 2.0 
>>> tab2 
array([[ 1., 2., 0.], 
     [ 2., 2., 2.], 
     [ 0., 2., 1.]]) 
関連する問題