2017-05-05 22 views
1
y = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) 

indices_of_y = np.array([12, 0, 6, 3, 4, 9, 11, 2]) 

      z = np.array([1 , 1, 0, 1, 1, 1, 0, 0]) 

      x = np.array([1, 1, 1, 0, 1, 0, 0, 1]) 

n = 3 

私は配列zとx要素を賢明に比較したいと思います。そして、zとxの要素が異なるyの要素だけにnを加えたいと思います。 zとxの要素が異なる場合、indices_of_yに示されるインデックス位置のyの要素にnを加えます。配列に特定の要素を追加しますか?

答えは次のようになります。

y = [1, 2, 6, 7, 5, 6, 10, 8, 9, 13, 11, 12, 13, 14, 15, 16] 

答えて

1

要素ごと平等のためにテストするためにあなたが

z != x    # array([False, False, True, True, False, True, False, True], dtype=bool) 

あなたが

indices_of_y[z != x] # array([6, 3, 9, 2]) 

これを使用したい指標を抽出するために使用することができ、結果を行います次にyのインデックスとして使用します。 yが2Dであり、あなたのインデックスは1Dで、我々は

y.ravel()   # array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]) 

を使用して、一時的に最初のyを平坦化する必要があるのでy.ravel()は、ビューの代わりにコピーを返すのでしかし、我々はあまりにも、直接、すべての要素を操作することができますし、yの変化を見ることができます。だから、3

y.ravel()[indices_of_y[z != x]] += n 

を組み合わせて、簡単に完璧な:)私が望ん結果

print(y) 
# array([[ 1, 2, 6, 7], 
#  [ 5, 6, 10, 8], 
#  [ 9, 13, 11, 12], 
#  [13, 14, 15, 16]]) 
+0

を参照してください。ありがとうございました !! @Nils Werner –

関連する問題