在python中扩展不同的形状/尺寸矩阵

时间:2015-05-26 15:48:23

标签: python numpy

我想用零填充两个矩阵相同的尺寸/形状填充..

例如我有

>>> 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)

我也查找了一些解决方案,但它们特定于形状,在我的情况下,形状是动态的 - 操作需要很快 - 就像我在大型矩阵上多次这样做

1 个答案:

答案 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.]])
>>>