0
を私は以下のコードで働いていますし、インデックスのエラーを取得しています:numpyのエラー:インデックスエラー
index 8 is out of bounds for axis 1 with size 8 and
index 6 is out of bounds for axis 0 with size 6`.
それぞれnp.arrange(8)
とnp.arrange(6)
にnp.arrange(1,9)
とnp.arrange(2,8)
を変更する場合はコードがで実行されますエラーはありません。しかし、出力行列Cは期待される結果とは異なる結果を与える。 i
とj
を(0,1,2,3,4,5,6,7)の代わりに(1,2,3,4,5,6,7,8)の値にするにはどうすればよいでしょうか?整数値(2,3,4,5,6,7)のk
とl
?私は
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)]
numpyとpythonは1ベースのインデックスを使用しないゼロベースのインデックスを使用しているため、インデックス8は範囲外です。 np.arange(A.shape [0])と 'np.arange(A.shape [1])のj ' – Suever
これは文字通りあなたの最後の質問(http://stackoverflow.com/a/36080741/670206)で私は混乱がどこにあるかわからないので、育った。 – Suever
この質問の上にあるテキストは、「複製」よりも大きく異なっています。私は私の答えを 'duplicate'に移しましたが、私の答えはこの質問のテキストを参照しています。 – roadrunner66