Numpy:扩展更大阵列的子阵列

时间:2015-02-05 13:58:39

标签: python arrays numpy

我有像这样的Numpy数组,

[[1 2 3
  2 0 0
  3 0 0]]

我想把它变成这种形式,

[[1 2 2 3 3
  2 0 0 0 0
  2 0 0 0 0
  3 0 0 0 0
  3 0 0 0 0]]

我的想法是从原始数组中提取子数组包含零,并使用Kronecker产品获取子数组,这是我想要的数组。但我不知道输出数组的第一行和第一行。

如何实现这一目标?请给我任何建议。

1 个答案:

答案 0 :(得分:3)

另一种方法是使用np.repeat。如果arr是您的3x3阵列:

>>> arr.repeat([1, 2, 2], axis=0).repeat([1, 2, 2], axis=1)
array([[1, 2, 2, 3, 3],
       [2, 0, 0, 0, 0],
       [2, 0, 0, 0, 0],
       [3, 0, 0, 0, 0],
       [3, 0, 0, 0, 0]])

例如,arr.repeat([1, 2, 2], axis=0)表示第一行arr重复一次,第二行重复两次,第三行重复三次。

然后对列进行同样的操作。