使用'np.arange'时出现Numpy错误:索引错误

时间:2016-03-23 23:43:57

标签: python numpy matrix

我正在使用下面显示的代码并收到索引错误:

  

索引8超出了轴1的大小为8和

的范围      

索引6超出轴0的范围,大小为6`。

分别将np.arrange(1,9)np.arrange(2,8)更改为np.arrange(8)np.arrange(6)时,代码运行时没有错误。但是,输出矩阵C给出的结果与预期不同。如果我希望ij是一个带有值(1,2,3,4,5,6,7,8)而不是(0,1,2,3,4)的整数怎么办? ,5,6,7)和kl具有整数值(2,3,4,5,6,7)?我正在创建一个矩阵C,它查看B的内部6x6平方(忽略边界),并在确定矩阵C的值时使用矩阵D作为“权重”。

import numpy
import numpy as np


A = np.matrix([[8,8,8,7,7,6,8,2],
               [8,8,7,7,7,6,6,7],
               [1,8,8,7,7,6,6,6],
               [1,1,8,7,7,6,7,7],
               [1,1,1,1,8,7,7,6],
               [1,1,2,1,8,7,7,6],
               [2,2,2,1,1,8,7,7],
               [2,1,2,1,1,8,8,7]])


B = np.ones((8,8),dtype=np.int)

for i in np.arange(1,9):
    for j in np.arange(1,9):
        B[i,j] = A[i,j]

C = np.zeros((6,6),dtype=np.int)
print C

D = np.matrix([[1,1,2,3,3,2,2,1],
               [1,2,1,2,3,3,3,2],
               [1,1,2,1,1,2,2,3],
               [2,2,3,2,2,2,1,3],
               [1,2,2,3,2,3,1,3],
               [1,2,3,3,2,3,2,3],
               [1,2,2,3,2,3,1,2],
               [2,2,3,2,2,3,2,2]])
print D

for k in np.arange(2,8):
    for l in np.arange(2,8):


            B[k,l] # point in middle
            b = B[(k-1),(l-1)]
            if b == 8:
                # Matrix C is smaller than Matrix B
                C[(k-1),(l-1)] = C[(k-1),(l-1)] + 1*D[(k-1),(l-1)]

1 个答案:

答案 0 :(得分:0)

请记住,Python索引从0开始,而不是1,因此您的数组将是0-7,而不是1-8。