Open In App

Ways to Add Row/Columns in Numpy Array - Python

Last Updated : 24 Jun, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

Adding rows or columns to a NumPy array means appending new data along a specific axis. For example, if you have a 2D array like [[1, 2], [3, 4]] and you add a new row [5, 6], the array becomes [[1, 2], [3, 4], [5, 6]]. Similarly, adding a column [7, 8, 9] to a 3x2 array transforms it into a 3x3 array.

Let’s explore different ways to do this efficiently using NumPy.

Add columns in the Numpy array

We can add columns to a NumPy array using append(), concatenate(), insert(), column_stack() or hstack() with axis=1. Just make sure the new column has the same number of rows as the original array.

Using np.append()

np.append() adds values to a NumPy array along a specified axis or flattens if axis is not set.

Python
import numpy as np
a = np.array([[1, 2, 3], [45, 4, 7], [9, 6, 10]])
b = np.array([[1], [2], [3]])

c = np.append(a, b, axis=1)
print(c)

Output
[[ 1  2  3  1]
 [45  4  7  2]
 [ 9  6 10  3]]

Explanation:

  • a is base array and b is array to append.
  • np.append(a, b, axis=1) adds b as a new column to a, resulting in a 3x4 matrix
  • whereas, axis=1 append along columns (i.e., horizontally).

Using np.concatenate()

np.concatenate() joins two or more arrays along a specified axis.

Python
import numpy as np
a = np.array([[1, 2, 3], [45, 4, 7], [9, 6, 10]])
b = np.array([[1], [2], [3]])

c = np.concatenate([a, b], axis=1)
print (c)

Output
[[ 1  2  3  1]
 [45  4  7  2]
 [ 9  6 10  3]]

Explanation:

  • np.concatenate([a, b], axis=1) is joining list of two arrays [a, b].
  • axis=1 join along columns (horizontally).

Using np.insert()

np.insert() inserts values into a NumPy array at specified positions along a given axis.

Python
import numpy as np
a = np.array([[1, 2, 3], [45, 4, 7], [9, 6, 10]])
b = np.array([[1], [2], [3]])

c = np.insert(a, 3, b.flatten(), axis=1)
print(c)

Output
[[ 1  2  3  1]
 [45  4  7  2]
 [ 9  6 10  3]]

Explanation:

  • b.flatten() converts b to a 1D array [1, 2, 3].
  • np.insert(a, 3, b.flatten(), axis=1) inserts b as the 4th column (index 3), one value per row.

Using np.hstack()   

np.hstack() horizontally stacks arrays (adds columns side by side).

Python
import numpy as np
a = np.array([[1, 2, 3], [45, 4, 7], [9, 6, 10]])
b = np.array([1, 2, 3])

c = np.hstack((a, np.atleast_2d(b).T))
print (c)

Output
[[ 1  2  3  1]
 [45  4  7  2]
 [ 9  6 10  3]]

Explanation:

  • np.atleast_2d(b).T converts b to a 3×1 column.
  • np.hstack() adds the column to the right of a.

Using np.column_stack()  

np.column_stack() stacks 1D or 2D arrays as columns to form a 2D array.

Python
import numpy as np
a = np.array([[1, 2, 3], [45, 4, 7], [9, 6, 10]])
b = np.array([1, 2, 3])

c = np.column_stack((a, b))
print (c)

Output
[[ 1  2  3  1]
 [45  4  7  2]
 [ 9  6 10  3]]

Explanation: np.column_stack((a, b)) stacks b as a new column to the right of a.

Add row in Numpy array

To add rows to a NumPy array, use functions like np.r_, np.insert(), np.vstack() or np.append() with axis=0.

Using np.r_ 

np.r_ is a shortcut for stacking arrays vertically (row-wise).

Python
import numpy as np
a = np.array([[1, 2, 3], [45, 4, 7], [9, 6, 10]])
b = np.array([1, 2, 3])

c = np.r_[a,[b]]
print (c)

Output
[[ 1  2  3]
 [45  4  7]
 [ 9  6 10]
 [ 1  2  3]]

Explanation: np.r_[a, [b]] appends b as a new row at the bottom of a.

Using np.insert()

np.insert() can add rows to a NumPy array by specifying the row index and using axis=0.

Python
import numpy as np
a = np.array([[1, 2, 3], [45, 4, 7], [9, 6, 10]])
b = np.array([1, 2, 3])

n = a.shape[0]  
c = np.insert(a, n, b, axis=0)
print(c)

Output
[[ 1  2  3]
 [45  4  7]
 [ 9  6 10]
 [ 1  2  3]]

Explanation:

  • n = a.shape[0] gets row count (3).
  • np.insert(a, n, b, axis=0) inserts b as a new row at the end of a.

Using np.vstack()  

np.vstack() adds arrays vertically, stacking them as new rows.

Python
import numpy as np
a = np.array([[1, 2, 3], [45, 4, 7], [9, 6, 10]])
b = np.array([1, 2, 3])

c = np.vstack ((a, b))
print (c)

Output
[[ 1  2  3]
 [45  4  7]
 [ 9  6 10]
 [ 1  2  3]]

Explanation: np.vstack((a, b)) vertically stacks b as a new row under a.

Using numpy.append()

You can add rows to an empty NumPy array using the numpy.append() function.

Example 1: Adding new rows to an empty 2-D array

Python
import numpy as np   

a = np.empty((0,2), int)
print("Empty array:\n", a)

a = np.append(a, np.array([[10,20]]), axis=0)
a = np.append(a, np.array([[40,50]]), axis=0)

print("\nNew array:\n",a )

Output
Empty array:
 []

New array:
 [[10 20]
 [40 50]]

Explanation:

  • np.empty((0,2), int) creates an empty array with 0 rows and 2 columns.
  • np.append(..., axis=0) appends new rows to a (row-wise), first adds [10, 20] then [40, 50].

Example 2: Adding new rows to an existing 2-D array.

Python
import numpy as np   
a = np.array([[1, 2, 3], [4, 5, 6]])
print("Original array:\n", a)

b = np.array([[7, 8, 9], [10, 11, 12]])
c = np.append(a, b, axis=0)
print("\nNew array:\n", c)

Output
Original array:
 [[1 2 3]
 [4 5 6]]

New array:
 [[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

Explanation: a is a 2D array, and b has the same number of columns. Using np.append(axis=0), the new rows are added to the bottom of the original array.

Related Articles:


Practice Tags :

Similar Reads

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy