鉴于以下阵列:更新选定的列在2D numpy的阵列与一维数组
from numpy import *
b = ones((5,5))
a = arange(4)
我如何用最少的代码量以下的阵列?与阵列a
基本上更新阵列b
的部分:
array([[ 1., 0., 0., 0., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 2., 2., 2., 1.],
[ 1., 3., 3., 3., 1.],
[ 1., 1., 1., 1., 1.]])
在MATLAB我可以用一条线来实现这一目标:
b = ones(5,5);
a = [0,1,2,3];
b(1:4,2:4) = repmat(a',[1,3])
索引与切片(':')基本上是在MATLAB和numpy的相同。但是,使用列表进行索引时有不同之处。 'b [[0,1,2,3],[1,2,3]]'是不同的(并且会产生一个错误)。 – hpaulj