[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

copy a numpy array

jimgardener

1/8/2008 3:32:00 PM

hi,
(i posted this to numpy discussion grp couple of days back ..but it
fails to appear..)since it is needed for my work i would appreciate if
anyone can help me with this question


i have two ndarrays of 1000 elements each and want to copy all
elements from srcarray to destarray

srcarray=numpy.array( [3973334.8381791776,........,382999.6748692277] )

arrsize=1000
destarray=zeros(arrsize)

i copied all items from src to dest by using
destarray[0:arrsize]=srcarray[0:arrsize]

i don't know if this is the right way to do the copying.
is there a better(efficient?) way ?
jim

4 Answers

Francesco Guerrieri

1/8/2008 5:35:00 PM

0

On Jan 8, 2008 4:32 PM, jimgardener <jimgardener@gmail.com> wrote:
> hi,
> (i posted this to numpy discussion grp couple of days back ..but it
> fails to appear..)since it is needed for my work i would appreciate if
> anyone can help me with this question
>
>
> i have two ndarrays of 1000 elements each and want to copy all
> elements from srcarray to destarray
>
> srcarray=numpy.array( [3973334.8381791776,........,382999.6748692277] )
>
> arrsize=1000
> destarray=zeros(arrsize)
>
> i copied all items from src to dest by using
> destarray[0:arrsize]=srcarray[0:arrsize]
>
> i don't know if this is the right way to do the copying.
> is there a better(efficient?) way ?
> jim


If you want the array to share the data, just use
destarray = numpy.array(srcarray)

Otherwise you can set the copy flag to False:

destarray = numpy.array(srcarray,copy=False)

bye,
Francesco

gsal

1/8/2008 6:11:00 PM

0

I am new to python and everything related to it, and it so happens
that I just went through the numpy tutorial last night, it is in

http://www.scipy.org/Tentative_NumP...

and the answer to your question is in section 3.7

Basically, if you want to make a (deep) copy of it:

destarray = srcarray.copy()

gsal

jimgardener

1/9/2008 5:36:00 AM

0

thanx guys for the replies
need a little clarification

srcarray=array([1.2,2.3,3.4,4.5,5.6])
destarray=array(srcarray,copy=False)

then
srcarray[2]=99.9
will cause the change to be reflected in both src and dest.
doesn't that mean data is shared between both arrays?

but if i do
destarray=array(srcarray)
or
destarray=srcarray.copy()
then the change in one array will not affect the other,meaning no data
sharing
....want to know if my understanding is right
jim

Francesco Guerrieri

1/9/2008 9:23:00 AM

0

On Jan 9, 2008 6:35 AM, jimgardener <jimgardener@gmail.com> wrote:
> thanx guys for the replies
> need a little clarification
>
> srcarray=array([1.2,2.3,3.4,4.5,5.6])
> destarray=array(srcarray,copy=False)
>
> then
> srcarray[2]=99.9
> will cause the change to be reflected in both src and dest.
> doesn't that mean data is shared between both arrays?
>
> but if i do
> destarray=array(srcarray)
> or
> destarray=srcarray.copy()
> then the change in one array will not affect the other,meaning no data
> sharing
> ...want to know if my understanding is right
> jim

You're right, I wrote too quickly and so I gave a wront information! sorry! :-)

Just try the following:
Apart from the copy method (which other have correctly pointed to),
the correct version is simply:

a = numpy.array([1,2])
b = numpy.array(a)

and now try modifying one of them.

bye
Francesco