如何在NumPy中更改(阵列数组的)数组中轴的值?

问题描述:

我有一个 4级 4维阵列contourscv2.findContours的结果)在我有一对坐标的结尾。它看起来像这样:如何在NumPy中更改(阵列数组的)数组中轴的值?

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

我想编辑的轴每个末级阵列的元件1,该值是10,我知道了documentation的大,但我不不知道如何将它应用得如此之深而不会变扁。怎么做?

+1

我觉得你有你的术语混乱。它是“4维”或“4轴”,而“轴1”我认为你的意思是“元素1” – Eric

+0

我确信你是对的。 – MrVocabulary

任何这些将工作:

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

对于'轮廓[:,:,:,1] + = 10',它表示“语法无效”对于'轮廓=轮廓[:,:,:,1] + 10',它表示“TypeError:列表索引必须是整数或切片,而不是元组”,以及轮廓[...,1] + 10' ,而对于cv :: pointSetBoundingRect中的'contours = contours + [0,10]'它说“OpenCV Error:Assertion failed(npoints> = 0 &&(depth == CV_32F || depth == CV_32S))。我不知道这些技巧,所以谢谢,但他们似乎关注Python列表,而不是NumPy数组。 – MrVocabulary

+1

没有办法让第一个给出一个'SyntaxError'。你必须输入错误,或以无效的方式添加到它。对于第二个问题,你必须在你的问题上撒谎 - 这听起来像是“轮廓”是一个“列表”,而不是“np.array”。第三个听起来不像是来自这行代码。 – Eric

+0

我的不好,'contours'是一个列表,但它的成员是numpy数组(直线轮廓[0],轮廓[0] [0]和轮廓[0] [0] [0]),直到'轮廓[0] [0] [0] [0]“,这是numpy int 32.有没有办法在列表或数组中使用简单的方式来做到这一点,而不使用'for'? – MrVocabulary