如何为python numpy数组添加维度

时间:2017-05-10 09:07:01

标签: numpy

假设我有这个数组:

import numpy as np
x = np.arange(4)

array([0, 1, 2, 3])

我想写一个非常基本的公式,它将从x生成这个数组:

array([[0, 1, 2, 3],
       [1, 2, 3, 4],
       [2, 3, 4, 5],
       [3, 4, 5, 6]])

使用python和numpy做最短的方法是什么?

由于

2 个答案:

答案 0 :(得分:1)

我能想到的最简单的方法就是使用numpy广播。

x[:,None]+x
Out[87]: 
array([[0, 1, 2, 3],
       [1, 2, 3, 4],
       [2, 3, 4, 5],
       [3, 4, 5, 6]])

答案 1 :(得分:0)

这应该做你想要的(注意我引入了不同数量的行(5)而不是列(4)以明确区分):

import numpy as np

A = np.tile(np.arange(4).reshape(1,4),(5,1))+np.tile(np.arange(5).reshape(5,1),(1,4))

print(A)

分解步骤:

  1. np.tile(np.arange(4).reshape(1,4),(5,1))创建一个(5,4)矩阵,每行有0,1,2,3项:

    [[0 1 2 3]
     [0 1 2 3]
     [0 1 2 3]
     [0 1 2 3]
     [0 1 2 3]]
    
  2. np.tile(np.arange(5).reshape(5,1),(1,4))在每列中创建一个(5,4)矩阵,其中包含0,1,2,3,4:

    [[0 0 0 0]
     [1 1 1 1]
     [2 2 2 2]
     [3 3 3 3]
     [4 4 4 4]]
    
  3. 两者的总和会产生你想要的结果:

    [[0 1 2 3]
     [1 2 3 4]
     [2 3 4 5]
     [3 4 5 6]
     [4 5 6 7]]