Sirui Li
Sirui Li

Reputation: 265

How to pad an array with rows

I have a set of numpy arrays with different number of rows and I would like to pad them to a fixed number of rows, e.g.

An array "a" with 3 rows:

a = [

[1.1, 2.1, 3.1]

[1.2, 2.2, 3.2]

[1.3, 2.3, 3.3]

]

I would like to convert "a" to an array with 5 rows:

[

[1.1, 2.1, 3.1]

[1.2, 2.2, 3.2]

[1.3, 2.3, 3.3]

[0, 0, 0]

[0, 0, 0]

]

I have tried np.concatenate((a, np.zeros(3)*(5-len(a))), axis=0), but it does not work.

Any help would be appreciated.

Upvotes: 0

Views: 278

Answers (1)

yatu
yatu

Reputation: 88305

You're looking for np.pad. To zero pad you must set mode to constant and the pad_width that you want on the edges of each axis:

np.pad(a, pad_width=((0,2),(0,0)), mode='constant')

array([[1.1, 2.1, 3.1],
       [1.2, 2.2, 3.2],
       [1.3, 2.3, 3.3],
       [0. , 0. , 0. ],
       [0. , 0. , 0. ]])

Upvotes: 2

Related Questions