# [Numpy-discussion] fast duplicate of array

Keith Goodman kwgoodman at gmail.com
Sat Jan 23 18:00:24 EST 2010

```On Sat, Jan 23, 2010 at 2:31 PM, Alan G Isaac <aisaac at american.edu> wrote:
> On 1/23/2010 5:01 PM, Anne Archibald wrote:
>> If both arrays are "C contiguous", or more generally contiguous blocks
>> of memory with the same strided structure, you might get faster
>> copying by flattening them first, so that it can go in a single
>> memcpy().
>
> I may misuderstand this.  Did you just mean
> x.flat = y.flat
> ?
>
> If so, I find that to be *much* slower.
>
> Thanks,
> Alan
>
>
> x = np.random.random((1000,1000))
> y = x.copy()
> t0 = time.clock()
> for t in range(1000): x = y.copy()
> print(time.clock() - t0)
> t0 = time.clock()
> for t in range(1000): x[:,:] = y
> print(time.clock() - t0)
> t0 = time.clock()
> for t in range(1000): x.flat = y.flat
> print(time.clock() - t0)

I don't know what a view is, but it is fast:

x = y.view()

def speed():
import numpy as np
import time
x = np.random.random((1000,1000))
y = x.copy()
t0 = time.clock()
for t in range(1000): x = y.copy()
print(time.clock() - t0)
t0 = time.clock()
for t in range(1000): x[:,:] = y
print(time.clock() - t0)
t0 = time.clock()
for t in range(1000): x.flat = y.flat
print(time.clock() - t0)
t0 = time.clock()
for t in range(1000): x = y.view()
print(time.clock() - t0)

>> speed()
1.3
2.07
15.0
0.01

```