调整和拉伸NumPy数组

Mat*_*hew 26 python arrays resize numpy stretch

我在Python工作,我有一个像这样的NumPy数组:

[1,5,9]
[2,7,3]
[8,4,6]
Run Code Online (Sandbox Code Playgroud)

如何将其拉伸到类似下面的内容?

[1,1,5,5,9,9]
[1,1,5,5,9,9]
[2,2,7,7,3,3]
[2,2,7,7,3,3]
[8,8,4,4,6,6]
[8,8,4,4,6,6]
Run Code Online (Sandbox Code Playgroud)

这些只是一些示例数组,我实际上将调整几个大小的数组,而不仅仅是这些.

我是新手,我似乎无法绕过我需要做的事情.

dtl*_*ier 27

@ KennyTM的答案非常灵活,并且非常适用于您的情况,但作为替代方案,可以为扩展阵列提供更多灵活性尝试np.repeat:

>>> a = np.array([[1, 5, 9],
              [2, 7, 3],
              [8, 4, 6]])

>>> np.repeat(a,2, axis=1)
array([[1, 1, 5, 5, 9, 9],
       [2, 2, 7, 7, 3, 3],
       [8, 8, 4, 4, 6, 6]])
Run Code Online (Sandbox Code Playgroud)

因此,这实现了沿一个轴重复,沿多个轴(如您所愿)获取它,简单地嵌套np.repeat调用:

>>> np.repeat(np.repeat(a,2, axis=0), 2, axis=1)
array([[1, 1, 5, 5, 9, 9],
       [1, 1, 5, 5, 9, 9],
       [2, 2, 7, 7, 3, 3],
       [2, 2, 7, 7, 3, 3],
       [8, 8, 4, 4, 6, 6],
       [8, 8, 4, 4, 6, 6]])
Run Code Online (Sandbox Code Playgroud)

您还可以更改任何初始行或列的重复次数.例如,如果您希望除最后一行之外每行重复两次:

>>> np.repeat(a, [2,2,1], axis=0)
array([[1, 5, 9],
       [1, 5, 9],
       [2, 7, 3],
       [2, 7, 3],
       [8, 4, 6]])
Run Code Online (Sandbox Code Playgroud)

这里当第二个参数是a时,list它指定了axis=0每行重复行(在这种情况下是因为行).


ken*_*ytm 14

>>> a = numpy.array([[1,5,9],[2,7,3],[8,4,6]])
>>> numpy.kron(a, [[1,1],[1,1]])
array([[1, 1, 5, 5, 9, 9],
       [1, 1, 5, 5, 9, 9],
       [2, 2, 7, 7, 3, 3],
       [2, 2, 7, 7, 3, 3],
       [8, 8, 4, 4, 6, 6],
       [8, 8, 4, 4, 6, 6]])
Run Code Online (Sandbox Code Playgroud)

  • 万一有人想知道,这是Kronecker的产品:http://docs.scipy.org/doc/numpy/reference/generated/numpy.kron.html (3认同)