[Numpy-discussion] fast duplicate of array
Keith Goodman
kwgoodman@gmail....
Sat Jan 23 17:00:24 CST 2010
On Sat, Jan 23, 2010 at 2:31 PM, Alan G Isaac <aisaac@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
More information about the NumPy-Discussion
mailing list