2017-06-27 46 views
0

我有打印出3x3矩陣的2×2矩陣卷積功能:類型錯誤在Python函數(int對象未標化)

image = [[1,0,1],  # Original image 
     [0,1,0], 
     [1,0,1]] 

在哪裏我的功能應該打印出來:

[1,0] 
[0,1] 
[0,1] 
[1,0] 
[0,1] 
[1,0] 
[1,0] 
[0,1] 

的功能如下

def convolution(image,result): 
    # Image being 2d matrix 
    # Result being return stacked 2d matrices 
    # DECLARE LOCAL VARIABLES 
    a = 0 # Slice [a:b] 
    b = 2 
    r = 0 
    # For row in image: 
    for row in image: 
     # While b < row length: 
     while b < len(row): 
      print(row[r][a:b]) # HERE IS THE ERROR 
      print(row[r+1][a:b]) 
      a += 1 
      b += 1 
     a = 0 # Slice [a:b] 
     b = 2 
     matrix2d.clear() 

我得到以下錯誤:

Traceback (most recent call last): 
    File "conv.py", line 49, in <module> 
    convolution(image,result3d) 
    File "conv.py", line 24, in convolution 
    print(row[r][a:b]) 
TypeError: 'int' object is not subscriptable 

這個錯誤信息對我來說比較模糊。可以做些什麼來糾正這個錯誤?

回答

1

在您的代碼中row是圖像的一行,例如[1,0,1]表示第一行。然後在你的while循環中,row[r]是一個整數,而不是一個數組。

錯誤消息爲您提供了錯誤的路線,並說,你不能把一個整數的下標,這意味着你不能做a[1]如果aint。有了這些信息,你就有了一個很好的線索來發現row[r]確實是一個整數。

相關問題