2017-02-23 19 views
0

4レベル 4次元配列contours(結果はcv2.findContours)です。最後に座標のペアがあります。 「NumPyで(配列の配列の)配列の配列の軸の値を変更するにはどうすればいいですか?

print(contours[0][0]) 
→ [[ 676 4145]] 
print(contours[0][0][0]) 
→ [ 676 4145] 
print(contours[0][0][0][1]) 
→ 4145 

私はdocumentationの承知していますが、私はドン値は10で大きめになるように、最後のレベルのアレイの各々の要素1を編集したい:それはこのようになりますそれを平らにすることなく深く適用する方法を知っています。どうやってするか?

+1

私はあなたがあなたの専門用語が混乱持っていると思います。それは「4次元」または「4軸」で、「軸1」は「要素1」を意味します。 – Eric

+0

あなたが正しいと確信しています。 – MrVocabulary

答えて

1

これらのいずれかが動作します:

  • contours[:,:,:,1] += 10
  • contours[...,1] += 10
  • contours += [0, 10]
+0

'contours [:、:、:、1] + = 10'の場合、"無効な構文 "となります。 'contours = ... contours [...、1] + 10'の場合と同様に、 "TypeError:リストインデックスはタプルではなく整数またはスライスでなければならない"一方、 'contours = contours + [0、10]'に対しては、 "OpenCV Error:アサーションが失敗しました(npoints = 0 &&(depth == CV_32F || depth == CV_32S))がcv :: pointSetBoundingRectにあります"と表示されます。私はこれらのトリックを知らないので、ありがたいですが、それらはNumPy配列ではなく、Pythonのリストに関係しているようです。 – MrVocabulary

+1

最初に「SyntaxError」を与える方法はありません。誤って入力したか、無効な方法で追加したはずです。 2番目の場合、あなたの疑問に嘘をついているに違いない - 'contours'は' np.array'ではなく 'list'です.3番目のコードはこのコード行から来ているようには聞こえません。 。 – Eric

+0

私の悪い 'contours'はリストですが、そのメンバはnumpy配列(' contours [0] '、' contours [0] [0] '、' contours [0] [0] [0] ')までです。 'contours [0] [0] [0]' 0、numpy int 32. 'for'を使わずに、リストや配列内の簡単な方法でこれを行う方法はありますか? – MrVocabulary

関連する問題