Python numpy array massaging

I need to make this array somehow:

[[639 190]
 [ 44   1]
 [ 71   4]
 ...,
 [863 347]
 [870 362]
 [831 359]]

      

look like this:

[[[639 190]]
 [[ 44   1]]
 [[ 71   4]]
 ...,
 [[863 347]]
 [[870 362]]
 [[831 359]]]

      

How should I do it? I am new to numpy and I need this for my scientific experiment.

+3


source to share


2 answers


Add a new axis with None/np.newaxis

-

a[:,None,:] # Or simply a[:,None]

      



Example run -

In [222]: a = np.random.randint(0,9,(4,3))

In [223]: a
Out[223]: 
array([[1, 6, 6],
       [4, 4, 5],
       [7, 4, 4],
       [4, 1, 3]])

In [224]: a[:,None]
Out[224]: 
array([[[1, 6, 6]],

       [[4, 4, 5]],

       [[7, 4, 4]],

       [[4, 1, 3]]])

      

+4


source


In addition to newaxis/None

that pointed out by @Divakar,



np.expand_dims(input_array, axis=1)

      

+3


source







All Articles