2

matlab/GNU Octave (実際に使用しています) では、このメソッドを使用して、2D 配列の特定の要素を別の 2D 配列にコピーします。

B(2:6, 2:6) = A

どこ

size(A) = (5, 5)

私の質問は、「python で numpy を使用してこれを実現するにはどうすればよいですか?」というものです。現在、たとえば、Python で次のネストされたループを使用しています。

>>> import numpy as np
>>> a = np.int32(np.random.rand(5,5)*10)
>>> b = np.zeros((6,6), dtype = np.int32)

>>> print a
[[6 7 5 1 3]
 [3 9 7 2 0]
 [9 3 7 6 7]
 [9 8 2 0 8]
 [8 7 7 9 9]]
>>> print b
[[0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0]]

>>> for i in range(1,6):
        for j in range(1,6):
            b[i][j] = a[i-1][j-1]
>>> print b
[[0, 0, 0, 0, 0, 0],
 [0, 6, 7, 5, 1, 3],
 [0, 3, 9, 7, 2, 0],
 [0, 9, 3, 7, 6, 7],
 [0, 9, 8, 2, 0, 8],
 [0, 8, 7, 7, 9, 9]]

これを行うより良い方法はありますか?

4

1 に答える 1

5

MATLAB とほぼ同じです。

b[1:6, 1:6] = a

唯一のことは、Python が 0 ベースのインデックスを使用するため、2 番目の要素が 2 ではなく 1 になることです。

于 2012-11-12T08:44:47.007 に答える