小编典典

如何沿着两个轴重复数组的元素?

python

我想分别沿轴0和轴1重复数组元素M和N次:

import numpy as np

a = np.arange(12).reshape(3, 4)
b = a.repeat(2, 0).repeat(2, 1)
print(b)

[[ 0  0  1  1  2  2  3  3]
 [ 0  0  1  1  2  2  3  3]
 [ 4  4  5  5  6  6  7  7]
 [ 4  4  5  5  6  6  7  7]
 [ 8  8  9  9 10 10 11 11]
 [ 8  8  9  9 10 10 11 11]]

这行得通,但是我想知道有没有更好的方法而无需创建临时数组。


阅读 159

收藏
2020-12-20

共1个答案

小编典典

您可以使用kronecker产品,请参阅numpy.kron

>>> a = np.arange(12).reshape(3,4)
>>> print np.kron(a, np.ones((2,2), dtype=a.dtype))
[[ 0  0  1  1  2  2  3  3]
 [ 0  0  1  1  2  2  3  3]
 [ 4  4  5  5  6  6  7  7]
 [ 4  4  5  5  6  6  7  7]
 [ 8  8  9  9 10 10 11 11]
 [ 8  8  9  9 10 10 11 11]]

不过,您原来的方法也可以!

2020-12-20