Copying Arrays
Often, you need to create a copy of an array to make changes without affecting the original array.
Simple Assignment
First, we'll discuss why we can't simply create another variable using array_2 = array_1, where array_1 is our original array.
123456import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
We changed the value of the first element of array_2 to 10, but this assignment also changed the value of the first element of array_1 to 10.
With array_2 = array_1, you are not creating a new array; instead, you are creating a reference to the same array in memory. As a result, any changes made to array_2 will also affect array_1.
To solve this problem, we could write array_2 = np.array([1, 2, 3]), but that would mean writing the same code twice. Remember the key principle in coding: Don't repeat yourself.
ndarray.copy() Method
Luckily, NumPy has an ndarray.copy() method as a solution to this problem.
12345678import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
Now, we have created a new array for array_2 with the same elements as array_1.
For 2D arrays, the copying procedure is exactly the same.
numpy.copy() Function
Instead of the .copy() method, we can also use the copy() function, which takes the array as its parameter: array_2 = np.copy(array_1).
Both the function and the method work the same; however, there is one nuance. They both have the order parameter, which specifies the memory layout of the array, but their default values are different.
The picture below shows the structure of the sales_data_2021 array used in the task:
Swipe to start coding
You are analyzing the quarterly sales data for a company for the year 2021. The data is stored in a NumPy array named sales_data_2021, where each row represents a specific product, and each column represents the quarterly sales for that product.
- Create a copy of
sales_data_2021using the appropriate method of a NumPy array and store it insales_data_2022. - Update the last two elements of the first row (representing a product's quarterly sales) in
sales_data_2022to390and370:- Use a positive index to specify the row;
- Use a slice with only a negative
startvalue to index the last two elements.
Solution
Thanks for your feedback!
single
Ask AI
Ask AI
Ask anything or try one of the suggested questions to begin our chat
Can you explain the difference between the .copy() method and np.copy() function in more detail?
What does the 'order' parameter do when copying arrays?
Can you show how to copy a 2D array using these methods?
Awesome!
Completion rate improved to 3.7
Copying Arrays
Swipe to show menu
Often, you need to create a copy of an array to make changes without affecting the original array.
Simple Assignment
First, we'll discuss why we can't simply create another variable using array_2 = array_1, where array_1 is our original array.
123456import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
We changed the value of the first element of array_2 to 10, but this assignment also changed the value of the first element of array_1 to 10.
With array_2 = array_1, you are not creating a new array; instead, you are creating a reference to the same array in memory. As a result, any changes made to array_2 will also affect array_1.
To solve this problem, we could write array_2 = np.array([1, 2, 3]), but that would mean writing the same code twice. Remember the key principle in coding: Don't repeat yourself.
ndarray.copy() Method
Luckily, NumPy has an ndarray.copy() method as a solution to this problem.
12345678import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
Now, we have created a new array for array_2 with the same elements as array_1.
For 2D arrays, the copying procedure is exactly the same.
numpy.copy() Function
Instead of the .copy() method, we can also use the copy() function, which takes the array as its parameter: array_2 = np.copy(array_1).
Both the function and the method work the same; however, there is one nuance. They both have the order parameter, which specifies the memory layout of the array, but their default values are different.
The picture below shows the structure of the sales_data_2021 array used in the task:
Swipe to start coding
You are analyzing the quarterly sales data for a company for the year 2021. The data is stored in a NumPy array named sales_data_2021, where each row represents a specific product, and each column represents the quarterly sales for that product.
- Create a copy of
sales_data_2021using the appropriate method of a NumPy array and store it insales_data_2022. - Update the last two elements of the first row (representing a product's quarterly sales) in
sales_data_2022to390and370:- Use a positive index to specify the row;
- Use a slice with only a negative
startvalue to index the last two elements.
Solution
Thanks for your feedback!
single