Numpy数组 - 复制行并在更大数组中居中列

0 投票
1 回答
1099 浏览
提问于 2025-04-16 16:09

我有很多数组,每个数组的大小是72行,x列,其中x小于144。我想对这些数组做两件事:

  1. 把每一行复制一遍,这样就会有144行。

  2. 把这些数组在水平方向上居中放在一个更大的144列的数组里。

最终的结果是一个144x144的数组。我想用numpy来实现,尽量避免使用循环(我已经会用循环来做这个了)。我搜索了一下,但还没有找到一个好的解决办法。

谢谢,

1 个回答

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]

撰写回答