我正在使用下面显示的代码并收到索引错误:
索引8超出了轴1的大小为8和
的范围索引6超出轴0的范围,大小为6`。
分别将np.arrange(1,9)
和np.arrange(2,8)
更改为np.arrange(8)
和np.arrange(6)
时,代码运行时没有错误。但是,输出矩阵C给出的结果与预期不同。如果我希望i
和j
是一个带有值(1,2,3,4,5,6,7,8)而不是(0,1,2,3,4)的整数怎么办? ,5,6,7)和k
和l
具有整数值(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)]
答案 0 :(得分:0)
请记住,Python索引从0开始,而不是1,因此您的数组将是0-7,而不是1-8。