[Numpy-discussion] Extending dimensions of a matrix

Robert Kern robert.kern at gmail.com
Thu May 26 23:22:58 EDT 2011


On Thu, May 26, 2011 at 21:52, santhu kumar <mesanthu at gmail.com> wrote:
> Hello All,
>
> I am trying to extend a piece of matlab code into numpy.
>
> And I am stuck at converting, ( x is a nX3 matrix)
> Matlab :
> dim = size(x,1) % would be n
> nx = x(:,:,ones(1,dim)) % would be nX3Xn matrix ..
>
> Now the same in Numpy seems to be tricky to me .. Can somebody help me in
> writing this piece of code.

[~]
|1> n = 10

[~]
|2> x = np.arange(n*3).reshape((n,3))

[~]
|3> nx = x[:,:,np.newaxis][:,:,np.zeros(n, dtype=int)]

[~]
|4> nx.shape
(10, 3, 10)

[~]
|5> nx
array([[[ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0],
        [ 1,  1,  1,  1,  1,  1,  1,  1,  1,  1],
        [ 2,  2,  2,  2,  2,  2,  2,  2,  2,  2]],

       [[ 3,  3,  3,  3,  3,  3,  3,  3,  3,  3],
        [ 4,  4,  4,  4,  4,  4,  4,  4,  4,  4],
        [ 5,  5,  5,  5,  5,  5,  5,  5,  5,  5]],

       [[ 6,  6,  6,  6,  6,  6,  6,  6,  6,  6],
        [ 7,  7,  7,  7,  7,  7,  7,  7,  7,  7],
        [ 8,  8,  8,  8,  8,  8,  8,  8,  8,  8]],

       [[ 9,  9,  9,  9,  9,  9,  9,  9,  9,  9],
        [10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
        [11, 11, 11, 11, 11, 11, 11, 11, 11, 11]],

       [[12, 12, 12, 12, 12, 12, 12, 12, 12, 12],
        [13, 13, 13, 13, 13, 13, 13, 13, 13, 13],
        [14, 14, 14, 14, 14, 14, 14, 14, 14, 14]],

       [[15, 15, 15, 15, 15, 15, 15, 15, 15, 15],
        [16, 16, 16, 16, 16, 16, 16, 16, 16, 16],
        [17, 17, 17, 17, 17, 17, 17, 17, 17, 17]],

       [[18, 18, 18, 18, 18, 18, 18, 18, 18, 18],
        [19, 19, 19, 19, 19, 19, 19, 19, 19, 19],
        [20, 20, 20, 20, 20, 20, 20, 20, 20, 20]],

       [[21, 21, 21, 21, 21, 21, 21, 21, 21, 21],
        [22, 22, 22, 22, 22, 22, 22, 22, 22, 22],
        [23, 23, 23, 23, 23, 23, 23, 23, 23, 23]],

       [[24, 24, 24, 24, 24, 24, 24, 24, 24, 24],
        [25, 25, 25, 25, 25, 25, 25, 25, 25, 25],
        [26, 26, 26, 26, 26, 26, 26, 26, 26, 26]],

       [[27, 27, 27, 27, 27, 27, 27, 27, 27, 27],
        [28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
        [29, 29, 29, 29, 29, 29, 29, 29, 29, 29]]])


-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the NumPy-Discussion mailing list