# NumPy copy()

Summary: in this tutorial, you’ll learn how to use the NumPy `copy()` method to create a copy of an array rather than a view.

## Introduction to the NumPy copy() method

When you slice an array, you get a subarray. The subarray is a view of the original array. In other words, if you change elements in the subarray, the change will be reflected in the original array. For example:

`import numpy as npa = np.array([ [1, 2, 3], [4, 5, 6] ])b = a[0:, 0:2] print(b)`

`b[0, 0] = 0 print(b) print(a)`

Code language: Python (python)

How it works.

First, create a 2D array:

`a = np.array([ [1, 2, 3], [4, 5, 6] ])`

Code language: Python (python)

Second, slice the array a and assign the subarray to the variable b:

`b = a[0:, 0:2]`

Code language: Python (python)

The variable b is:

`[[1 2] [4 5]]`

Code language: Python (python)

Third, change the element at index [0,0] in the subarray b to zero and display the variable b:

`b[0, 0] = 0 print(b)`

Code language: Python (python)

`[[0 2] [4 5]]`

Code language: Python (python)

Since b is a view of array a, the change is also reflected in array a:

`print(a)`

Code language: Python (python)

`[[0 2 3] [4 5 6]]`

Code language: Python (python)

The reason numpy creates a view instead of a new array is that it doesn’t have to copy data therefore improving performance.

However, if you want a copy of an array rather than a view, you can use `copy()` method. For example:

`import numpy as npa = np.array([ [1, 2, 3], [4, 5, 6] ])# make a copy b = a[0:, 0:2].copy() print(b)b[0, 0] = 0 print(b)`

`print(a)`

Code language: Python (python)

In this example:

First, call the `copy()` method of array a to make a copy of a subarray and assign it to the variable b.

Second, change the element at index [0,0] of the array b, because both arrays are independent, the change doesn’t affect array a.

## Summary

• When you slice an array, you’ll get a view of the array.
• Use the `copy()` method to make a copy of an array rather than a view.