[Numpy-discussion] indexing, searchsorting, ...
Neil Martinsen-Burrell
nmb@wartburg....
Tue Jan 26 10:46:00 CST 2010
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
More information about the NumPy-Discussion
mailing list