(49) numpy配列の部分代入

投稿者: | 2014年8月29日

9,049 views

この記事は最終更新から 1880日 が経過しています。

例として 8行5列の配列 aを作る。

>>> import numpy as np
>>> a = np.random.rand(8,5)
>>> a
array([[ 0.59477343,  0.39696101,  0.8635444 ,  0.57730748,  0.80778975],
       [ 0.36723965,  0.48813453,  0.53213475,  0.0682938 ,  0.23692774],
       [ 0.82790539,  0.02619104,  0.7563847 ,  0.10553861,  0.59796693],
       [ 0.62885835,  0.61025432,  0.60352469,  0.09148856,  0.55585131],
       [ 0.54324068,  0.61347011,  0.6137894 ,  0.8560153 ,  0.39223471],
       [ 0.28993199,  0.37723578,  0.65900017,  0.60465485,  0.56363825],
       [ 0.00705464,  0.58109945,  0.79664211,  0.92434556,  0.01637478],
       [ 0.79555517,  0.61280461,  0.32642076,  0.70221643,  0.17151009]])

これに部分代入する 3行2列の配列 bを作る。
代入結果がわかりやすいように整数とする。

>>> b=(np.random.rand(3,2) * 10).astype(np.int32).astype(np.float32)
>>> b
array([[ 2.,  7.],
       [ 4.,  6.],
       [ 7.,  7.]], dtype=float32)

a[2][2]を起点に bを代入する。

>>> sb = b.shape
>>> sb
(3, 2)
>>> a[2:2+sb[0], 2:2+sb[1]] = b
>>> a
array([[ 0.59477343,  0.39696101,  0.8635444 ,  0.57730748,  0.80778975],
       [ 0.36723965,  0.48813453,  0.53213475,  0.0682938 ,  0.23692774],
       [ 0.82790539,  0.02619104,  2.        ,  7.        ,  0.59796693],
       [ 0.62885835,  0.61025432,  4.        ,  6.        ,  0.55585131],
       [ 0.54324068,  0.61347011,  7.        ,  7.        ,  0.39223471],
       [ 0.28993199,  0.37723578,  0.65900017,  0.60465485,  0.56363825],
       [ 0.00705464,  0.58109945,  0.79664211,  0.92434556,  0.01637478],
       [ 0.79555517,  0.61280461,  0.32642076,  0.70221643,  0.17151009]])

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です