我想用零填充两个矩阵相同的尺寸/形状填充..
例如我有
>>> x
array([[ 1., -1., 1.],
[ 1., 1., - 1.]])
>>>
>>>
>>> y
array([[ 2., 2.],
[ 2., 2.],
[ -2., 2.]])
我想要的输出
x1 = array([[ 1., -1., 1.],
[ 1., 1., -1.],
[ 0., 0., 0.]])
y1 =array([[ 2., 2., 0.],
[ 2., 2., 0.],
[ -2., 2., 0.]])
任何帮助?我查了一下“垫子”,但是我们使用的numpy版本比较旧,所以它没有垫。 (numpy ver.1.6.x)
我也查找了一些解决方案,但它们特定于形状,在我的情况下,形状是动态的 - 操作需要很快 - 就像我在大型矩阵上多次这样做
答案 0 :(得分:0)
每个数组都有一个shape
:
>>> x = np.array([[ 1., -1., 1.],
... [ 1., 1., - 1.]])
>>> y = np.array([[ 2., 2.],
... [ 2., 2.],
... [ -2., 2.]])
>>> x.shape
(2, 3)
>>> y.shape
(3, 2)
我们只需要计算“最大形状”并将其用于新数组:
>>> shape = np.maximum(x.shape, y.shape)
>>> x1 = np.zeros(shape)
然后我们可以将原始数组中的数据复制到新数组的相应部分中:
>>> x1[:x.shape[0], :x.shape[1]] = x
>>> y1 = np.zeros(shape)
>>> y1[:y.shape[0], :y.shape[1]] = y
结果
>>> x1
array([[ 1., -1., 1.],
[ 1., 1., -1.],
[ 0., 0., 0.]])
>>> y1
array([[ 2., 2., 0.],
[ 2., 2., 0.],
[-2., 2., 0.]])
>>>