Numpy数组 - 在较大的数组中复制行和居中列

时间:2011-04-21 08:34:59

标签: python

我有大量的维数为72的数组,其中x小于144.我想采用这些数组并对它们做两件事:

  1. 复制原件中的每一行,使其中有144行。

  2. 将数组水平居中于较大的144

  3. 最终结果是144x144阵列。我想使用numpy并尽可能避免循环(我已经可以在循环中实现它)。我已经四处寻找,但还没有找到一个简洁的解决方案。

    谢谢,

1 个答案:

答案 0 :(得分:2)

让我们举个更小的例子:

import numpy as np
a = np.array([[1, 2],
              [3, 4]])

b = np.zeros((4,4))

b[:,1:-1] = np.repeat(a, 2, axis=0)

# returns:

array([[ 0.,  1.,  2.,  0.],
       [ 0.,  1.,  2.,  0.],
       [ 0.,  3.,  4.,  0.],
       [ 0.,  3.,  4.,  0.]])

所以对你的情况来说:

a = np.arange(5184).reshape(72,72)
b = np.zeros((144,144))
b[36:-36,:] = np.repeat(a, int(144 / a.shape[0]) + 1, axis=1)[:,:144]