[Numpy-discussion] when and where to use numpy arrays vs nested lists

Mark P. Miller mpmusu@cc.usu....
Thu Mar 1 11:38:47 CST 2007


>> ##imports
>> import numpy as NP
>>from numpy.random import randint
>> #numpy array code
>> array1 = NP.zeros((50,50), int)
>>
>> def random1():
>>     c = array1(randint(10), randint(10))
>>  
>>
> Is this a bug?  You can't "call" an array.  Did you mean, 
> array1[randint(10), randint(10)]?


Good catch...I accidentally cut and pasted a line containing a typo.  I 
actually used c = array1[randint(50), randint(50)] when doing my 
comparisons.

> 
> Getting single indices like this is a bit slower for NumPy then for 
> lists because of all the possibilities that must be distinguished for 
> array indexing.   List indexing is a very simple thing.  Thus, lists can 
> be seen as collections that are optimized for simple indexing.  If all 
> you are doing is simple indexing, then lists are going to be faster.
> 
> You can try using array1.item(randint(10), randint(10)), like this:
> 
> getitem = array1.item
> def random1():
>       getitem(randint(50), randint(50))
> 
> Also, you might try using
> 
> array2 = array1.tolist()
> 
> instead of creating one like you do. 
> 
> I get comparable speeds in this case.

Excellent...I'll check on this.  It appears that the simplest approach 
is not the best in this case.  Thanks for pointing this out.

-Mark




> 
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion@scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion


More information about the Numpy-discussion mailing list