Python:连接(或克隆)一个numpy数组N次

ste*_*ios 33 python arrays numpy concatenation append

我想通过克隆Mx1 ndarray N次来创建一个MxN numpy数组.是否有一种有效的pythonic方法来代替循环?

顺便说一句,以下方式对我不起作用(X是我的Mx1数组):

   numpy.concatenate((X, numpy.tile(X,N)))
Run Code Online (Sandbox Code Playgroud)

因为它创建了[M*N,1]数组而不是[M,N]

Cor*_*mer 54

你很近,想要使用np.tile,但是像这样:

a = np.array([0,1,2])
np.tile(a,(3,1))
Run Code Online (Sandbox Code Playgroud)

结果:

array([[0, 1, 2],
   [0, 1, 2],
   [0, 1, 2]])
Run Code Online (Sandbox Code Playgroud)

如果你打电话,np.tile(a,3)你会得到concatenate你所看到的行为

array([0, 1, 2, 0, 1, 2, 0, 1, 2])
Run Code Online (Sandbox Code Playgroud)

http://docs.scipy.org/doc/numpy/reference/generated/numpy.tile.html


ato*_*3ls 13

你可以使用vstack:

numpy.vstack([X]*N)
Run Code Online (Sandbox Code Playgroud)

例如

    >>> import numpy as np
    >>> X = np.array([1,2,3,4])
    >>> N = 7
    >>> np.vstack([X]*N)
    array([[1, 2, 3, 4],
           [1, 2, 3, 4],
           [1, 2, 3, 4],
           [1, 2, 3, 4],
           [1, 2, 3, 4],
           [1, 2, 3, 4],
           [1, 2, 3, 4],
           [1, 2, 3, 4],
           [1, 2, 3, 4]])
Run Code Online (Sandbox Code Playgroud)

  • 还需要“vstack”吗?为什么不只是“np.array([X] * N)”? (2认同)