Re: [Numpy-discussion] indexing, searchsorting, ...

Dear Josef and Keith, thank you both for your suggestions. I think intersect would be what I want for it makes clean code. I have, however, spotted the problem: I was mistakenly under the assumption that random_integers returns unique entries, which is of course not guaranteed, so that the random sample contained duplicate entries. That's why the numpy methods returned results inconsistent with python 'in'. I'll have to be a bit smarter in the generation of the random sample. Good thing I try to do things in two different ways. (Sometimes it is, anyway...) Thanks again for your quick help. Cheers, Jan

On 2010-01-26 10:22 , Jan Strube wrote:
Dear Josef and Keith,
thank you both for your suggestions. I think intersect would be what I want for it makes clean code. I have, however, spotted the problem: I was mistakenly under the assumption that random_integers returns unique entries, which is of course not guaranteed, so that the random sample contained duplicate entries. That's why the numpy methods returned results inconsistent with python 'in'. I'll have to be a bit smarter in the generation of the random sample. Good thing I try to do things in two different ways. (Sometimes it is, anyway...)
You probably know this, but the function sample in Python's random module does sample without replacement. In [1]: import random In [2]: random.sample([1,2,3],2) Out[2]: [2, 3] In [5]: random.sample([1,2,3],3) Out[5]: [1, 2, 3] In [7]: random.sample([1,2,3],4) --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /Users/nmb/<ipython console> in <module>() /Library/Frameworks/Python.framework/Versions/6.0.0/lib/python2.6/random.pyc in sample(self, population, k) 314 n = len(population) 315 if not 0 <= k <= n: --> 316 raise ValueError, "sample larger than population" 317 random = self.random 318 _int = int ValueError: sample larger than population In [9]: import numpy as np A = In [10]: A = np.arange(1000)**(3/2.) In [11]: A[random.sample(range(A.shape[0]),25)] Out[11]: array([ 12618.24425188, 30538.0882342 , 18361.74109392, 925.94546276, 2935.15331797, 4000.37598233, 21826.1206127 , 2618.9692629 , 868.08467329, 52.38320341, 12063.64687812, 29930.60881439, 12236.06517635, 10221.89370909, 2414.9534157 , 13039.6113439 , 22967.67537214, 15140.04385727, 2639.67251757, 26461.80402013, 3218.73142713, 15963.71209963, 11755.35677893, 11551.31295568, 29142.37675619]) -Neil

Hi Neil, sure...I aeh, knew this...of course...[?] I'm using shuffle with a list of indices now... Thanks, Jan
participants (2)
-
Jan Strube
-
Neil Martinsen-Burrell