![]() ![]() Or with np.argsort like so - np.random.rand(138).argsort() NumPy's np.random.choice(138,4, replace=False) with np.argpartition as : np.random.rand(138).argpartition(range(4)) (string vs lambda doesn't make a noticeable difference)īased on this solution that showed how one can simulate np.random.choice(., replace=False)'s behavior with a trick based on argsort/ argpartition, you can recreate MATLAB's randperm(138,4), i.e. That's about 22 times faster than the original: > timeit.timeit('permutation(138)', setup='from numpy.random import permutation', number=1000000) Update 2: Since NumPy's random function appears to be much faster, I tried this and it's another factor ~1.33 faster: > def four(): Update 1: At first I used random.randrange, but np.random.randint made the whole thing about twice as fast. Return (a, b, c, d) if a != b and a != c and a != d and b != c and b != d and c != d else four() How long does this take for you? I estimate 1-2 seconds. How to return html of a page using robobrowser.Now to convert this strings to date time object in Python or django?.Django: alternative to using annotate(Count()) for speed.How to open a generated PDF file in browser?.Duplicate key issue when loading back.json file PostgreSQL.Logged in users still see login page (django auth).Django Rest Framework add page number attribute using the PageNumberPagination class. ![]() must be of the form 'app_label.ModelName'." % model ValueError: Invalid model reference.Django Raises Improperl圜onfigured When Trying to Create A Menu by django-admin-tools.Split a dataframe into all possible combinations of dataframes by 3 columns in R.beautifulsoup how to purposely add return none if element not found. ![]() Filtering a pyspark DataFrame where rows are within a range of another DataFrame.Assigning values to a column based on values of a second (shorter) column from a different dataframe.pandas.DataFrame: Filter rows of df A based on data in df B?.How to transform a timestamp in a data frame.Is there an easy way to run DataFrames::by in parallel?.That's about 22 times faster than the original: > timeit.timeit('permutation(138)', setup='from numpy. ![]() Seems like one could use np.argsort for a marginal performance improvement. The original proposed one with NumPy - In : timeit.timeit( 'choice(138, 4)', setup='from numpy.random import choice', number=1000000) On NumPy with np.argsort - In : timeit.timeit( 'np.random.rand(138).argsort()', setup='import numpy as np', number=1000000) On NumPy with np.argpartition - In : timeit.timeit( 'np.random.rand(138).argpartition(range(4))', setup='import numpy as np', number=1000000) Let's time these two versions for performance comparison against the MATLAB version. Based on this solution that showed how one can simulate np.random.choice(., replace=False)'s behavior with a trick based on argsort/ argpartition, you can recreate MATLAB's randperm(138,4), i.e. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |