You need to create the copy of the object. You may do it using numpy.copy() since you are having numpy object. Hence, your initialisation should be like:

imageEdited_3d = imageOriginal_3d.copy()

Also there is copy module for creating the deep copy OR, shallow copy. This works independent of object type. For example, your code using copy should be as:

from copy import copy, deepcopy

# Creates shallow copy of object
imageEdited_3d = copy(imageOriginal_3d)

# Creates deep copy of object
imageEdited_3d = deepcopy(imageOriginal_3d)

Description:

A shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original.

A deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the original.

Answer from Moinuddin Quadri on Stack Overflow
๐ŸŒ
NumPy
numpy.org โ€บ doc โ€บ stable โ€บ user โ€บ basics.copies.html
Copies and views โ€” NumPy v2.5 Manual
When a new array is created by duplicating the data buffer as well as the metadata, it is called a copy. Changes made to the copy do not reflect on the original array. Making a copy is slower and memory-consuming but sometimes necessary. A copy can be forced by using ndarray.copy.
๐ŸŒ
Linux Hint
linuxhint.com โ€บ copy-array-python
Copy Array in Python โ€“ Linux Hint
Create a Python file with the following script to know the way of copying an array without using any built-in function or assignment operator. Any loop can be used to copy the values of an array to another array. The โ€˜forโ€™ loop has been used in the script to copy an array to another array.
Find elsewhere
๐ŸŒ
NumPy
numpy.org โ€บ devdocs โ€บ user โ€บ basics.copies.html
Copies and views โ€” NumPy v2.6.dev0 Manual
When a new array is created by duplicating the data buffer as well as the metadata, it is called a copy. Changes made to the copy do not reflect on the original array. Making a copy is slower and memory-consuming but sometimes necessary. A copy can be forced by using ndarray.copy.
๐ŸŒ
GeeksforGeeks
geeksforgeeks.org โ€บ python โ€บ numpy-copy-and-view
NumPy Copy and View of Array - GeeksforGeeks
January 14, 2026 - Explanation: A NumPy array arr is created and a view v is made using .view(). Though they have different IDs, they share the same data, so changes in arr (like arr[0] = 12) also appear in v. A copy creates a new, independent array with its own memory. Any change to the copied array wonโ€™t affect the original one, and vice versa. This is useful when you want to modify data safely without touching the original.
๐ŸŒ
W3Schools
w3schools.com โ€บ python โ€บ numpy โ€บ numpy_copy_vs_view.asp
NumPy Array Copy vs View
As mentioned above, copies owns the data, and views does not own the data, but how can we check this? Every NumPy array has the attribute base that returns None if the array owns the data. Otherwise, the base attribute refers to the original object.
๐ŸŒ
NumPy
numpy.org โ€บ doc โ€บ 2.0 โ€บ user โ€บ basics.copies.html
Copies and views โ€” NumPy v2.0 Manual
When a new array is created by duplicating the data buffer as well as the metadata, it is called a copy. Changes made to the copy do not reflect on the original array. Making a copy is slower and memory-consuming but sometimes necessary. A copy can be forced by using ndarray.copy.
๐ŸŒ
NumPy
numpy.org โ€บ doc โ€บ 2.1 โ€บ user โ€บ basics.copies.html
Copies and views โ€” NumPy v2.1 Manual
When a new array is created by duplicating the data buffer as well as the metadata, it is called a copy. Changes made to the copy do not reflect on the original array. Making a copy is slower and memory-consuming but sometimes necessary. A copy can be forced by using ndarray.copy.
๐ŸŒ
NumPy
numpy.org โ€บ doc โ€บ stable โ€บ reference โ€บ generated โ€บ numpy.copyto.html
numpy.copyto โ€” NumPy v2.5 Manual
>>> import numpy as np >>> A = np.array([4, 5, 6]) >>> B = [1, 2, 3] >>> np.copyto(A, B) >>> A array([1, 2, 3])
๐ŸŒ
Readthedocs
ecco-v4-python-tutorial.readthedocs.io โ€บ ECCO_v4_Operating_on_Numpy_Arrays.html
Operating on Numpy arrays โ€” ECCO Version 4 Python Tutorial 4.4.1 documentation
Operating on the right hand side of the assignment does indeed new arrays in memory leaving the original SSH numpy array untouched. A second way to have a new variable assignment not point to the original variable is to use the copy or deepcopy command.
๐ŸŒ
NumPy
numpy.org โ€บ doc โ€บ 2.2 โ€บ reference โ€บ generated โ€บ numpy.ndarray.copy.html
numpy.ndarray.copy โ€” NumPy v2.2 Manual
The function numpy.copy is similar, but it defaults to using order โ€˜Kโ€™, and will not pass sub-classes through by default. ... For arrays containing Python objects (e.g. dtype=object), the copy is a shallow one.
๐ŸŒ
GeeksforGeeks
geeksforgeeks.org โ€บ how-to-copy-numpy-array-into-another-array
How to Copy NumPy array into another array? - GeeksforGeeks
January 10, 2024 - Original array: [ 1.54 2.99 3.42 4.87 6.94 8.21 7.65 10.5 77.5 ] Copied array: [ 1.54 2.99 3.42 4.87 6.94 8.21 7.65 10.5 77.5 ] In this example, the given 2-D Numpy array 'org_array' is copied to another array 'copy_array' using np.copy () function.