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

发布于 2021-01-29 19:34:02

我想分别沿轴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]]

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

关注者
0
被浏览
78
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用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]]
    

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看