Never mind, I found the numpy.copy function does what I need. Revised code
below works.
Sorry for wasting bandwidth.
Peter
--- nptest.py ---
import numpy as np
import sys
if len(sys.argv) > 0:
try:
asz = int(sys.argv[1]) + 0
except:
asz = 4
npary = np.full([asz, asz, asz], 0, dtype=np.int32)
print("Array before change=\n{}".format(npary))
svary = np.copy(npary, order='C')
npary[1:-1, 1:-1, 1:-1] = 1
print("Array after change=\n{}".format(npary))
npary = svary
print("Array after restore=\n{}".format(npary))
--- nptest.py ---
> -----Original Message-----
> From: [email protected] <[email protected]>
> Sent: Wednesday, November 25, 2020 1:48 AM
> To: '[email protected]' <[email protected]>
> Subject: Why can't numpy array be restored to saved value?
>
> Why isn't the final value of the numpy array npary in the following code
the
> same as the initial value before some but not all elements of the array
were
> changed to a new value?
>
> I know I am missing something basic here. I thought I understood the
concepts
> of immutable vs mutable values but obviously I missed something.
>
> My environment is Win10-64, Python 3.8.5, numpy 1.19.2.
>
> Code and output follows. TIA for any help you can provide to cure my
> ignorance.
>
> Peter
>
> --- nptest.py ---
> import numpy as np
> import sys
>
> if len(sys.argv) > 0:
> try:
> asz = int(sys.argv[1]) + 0
> except:
> asz = 4
>
> npary = np.full([asz, asz, asz], 0, dtype=np.int32)
> print("Array before change=\n{}".format(npary))
> svary = npary[:, :, :]
> npary[1:-1, 1:-1, 1:-1] = 1
> print("Array after change=\n{}".format(npary))
> npary = svary[:, :, :]
> print("Array after restore=\n{}".format(npary))
> --- nptest.py ---
>
> --- output ---
> Array before change=
> [[[0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]]
>
> [[0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]]
>
> [[0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]]
>
> [[0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]]]
> Array after change=
> [[[0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]]
>
> [[0 0 0 0]
> [0 1 1 0]
> [0 1 1 0]
> [0 0 0 0]]
>
> [[0 0 0 0]
> [0 1 1 0]
> [0 1 1 0]
> [0 0 0 0]]
>
> [[0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]]]
> Array after restore=
> [[[0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]]
>
> [[0 0 0 0]
> [0 1 1 0]
> [0 1 1 0]
> [0 0 0 0]]
>
> [[0 0 0 0]
> [0 1 1 0]
> [0 1 1 0]
> [0 0 0 0]]
>
> [[0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]
> [0 0 0 0]]]
> --- output ---
--
https://mail.python.org/mailman/listinfo/python-list