AMcoder - javascript, python, java, html, php, sql

np.random.rand ընդդեմ np.random.random

Ես գտնում եմ, որ Python-ը (և նրա էկոհամակարգը) լի է տարօրինակ պայմանականություններով և անհամապատասխանություններով, և սա ևս մեկ օրինակ է.

np.random.rand

Ստեղծեք տրված ձևի զանգված և լրացրեք այն [0, 1-ի վրա» միատեսակ բաշխման պատահական նմուշներով:

np.random.random

Վերադարձեք պատահական լողացողները կիսաբաց միջակայքում [0.0, 1.0): Արդյունքները ստացվում են նշված միջակայքում «շարունակական համազգեստի» բաշխումից:

??? Կոնկրետ ի՞նչ տարբերություն կա այնտեղ։

10.11.2017

  • Տարբերություն կա շարունակական միասնական բաշխման և միասնական բաշխման միջև: Սա կարող է օգնել ձեզ պարզաբանել այն.docs.scipy.org/doc/numpy-1.13.0/reference/generated/ 11.11.2017
  • Տես stackoverflow.com/a/24542083/6328256 11.11.2017
  • Տես en.wikipedia.org/wiki/Uniform_distribution_(continuous) և en.wikipedia.org/wiki/Discrete_uniform_distribution 11.11.2017
  • Սա հավանաբար նույն դեպքն է այստեղ՝ stackoverflow.com/a/46634281/2285236 11.11.2017
  • @ayhan դա ճիշտ է: 11.11.2017
  • @shash678, որը ոչ մի կապ չունի իմ հարցի հետ։ Այդ երկու գործառույթները նախատեսված են ստանդարտ նորմ կամ հատուկ նորմ ստեղծելու համար (ընտրեք միջին և շեղում/սդ): 11.11.2017
  • @Caleb_McCreary Ես բառացիորեն մեջբերում էի այդ էջից... և ոչ, տարբերություն չկա, քանի դեռ չեն ասել դիսկրետ և շարունակական, իսկ դիսկրետը իմաստ չունի 0-ի և 1-ի միջև: Ստուգեք պատասխանը, երկու գործառույթներն իրականում նույնն են: , կարծես թե պարզապես կոնվենցիա է matlab-ի օգտատերերի և ուրիշներին շփոթեցնելու/նյարդայնացնելու համար 11.11.2017
  • @Spacemonkey Ես մտածեցի, որ հնարավոր է, որ դուք անտեսել եք դա: Ես իսկապես ուզում էի հավատալ, որ նրանք գնում են դիսկրետ և շարունակական միատեսակ բաշխումներ, քանի որ երկու նույնական, բայց տարբեր անուններով ֆունկցիաներ ասինին են, բայց հե՜յ, ձուն իմ դեմքին: Ուրախ եմ, որ պատասխան ստացաք: 11.11.2017
  • @Caleb_McCreary Ես ներել եմ քո մեղքերը 11.11.2017

Պատասխանները:


1

Նախ նշեք, որ numpy.random.random-ն իրականում numpy.random.random_sample: Վերջինս կօգտագործեմ հետևյալում. (Տե՛ս այս հարցն ու պատասխանը ավելի շատ անունների համար:)

Երկու գործառույթներն էլ ստեղծում են նմուշներ միատեսակ բաշխումից [0, 1-ում): Միակ տարբերությունն այն է, թե ինչպես են վարվում փաստարկները: numpy.random.rand-ով, յուրաքանչյուր հարթության երկարությամբ ելքային զանգվածի առանձին արգումենտ է: numpy.random.random_sample-ի դեպքում ձևի արգումենտը մեկ կրկնակի է:

Օրինակ՝ ձևով (3, 5) նմուշների զանգված ստեղծելու համար կարող եք գրել

sample = np.random.rand(3, 5)

or

sample = np.random.random_sample((3, 5))

(Իրոք, դա այդպես է):


Թարմացնել

1.17 տարբերակի դրությամբ NumPy-ն ունի նոր պատահական API: [0, 1) վրա միասնական բաշխումից նմուշներ ստեղծելու առաջարկվող մեթոդը հետևյալն է.

>>> rng = np.random.default_rng()  # Create a default Generator.
>>> rng.random(size=10)  # Generate 10 samples.
array([0.00416913, 0.31533329, 0.19057857, 0.48732511, 0.40638395,
       0.32165646, 0.02597142, 0.19788567, 0.08142055, 0.15755424])

Նոր Generator դասը չունի rand() կամ random_sample() մեթոդները: Կա կա uniform() մեթոդ, որը թույլ է տալիս նշել բաշխման ստորին և վերին սահմանները: օր.

>>> rng.uniform(1, 2, size=10)
array([1.75573298, 1.79862591, 1.53700962, 1.29183769, 1.16439681,
       1.64413869, 1.7675135 , 1.02121057, 1.37345967, 1.73589452])

numpy.random անվանատարածքի հին գործառույթները կշարունակեն աշխատել, սակայն դրանք համարվում են սառեցված՝ առանց շարունակական զարգացման: Եթե ​​դուք գրում եք նոր կոդ, և ստիպված չեք լինի աջակցել numpy-ի 1.17-ից առաջ տարբերակներին, խորհուրդ է տրվում օգտագործել նոր պատահական API-ը:

10.11.2017
  • ճիշտ է, այնպես որ իրականում տարբերություն չկա: Ես զարմանում եմ, թե ինչու մենք ունենք երկու տարբեր անուններով ֆունկցիաներ, որոնք նույն բանն են անում: IMHO նրանք պետք է մաքրեն սա: 11.11.2017
  • Դրա համար կան պատմական պատճառներ, որոնք, հավանաբար, կապված են Matlab ծրագրավորողների համար Python+Numpy-ին անցումը հեշտացնելու հետ (c.f. Matlab-ի rand): Այն մաքրելը կարող է ավելի շատ դժվարություններ առաջացնել, քան արժե, քանի որ, հավանաբար, գոյություն ունի շատ կոդ, որն օգտագործում է գործառույթների տարբեր տարբերակները: 11.11.2017
  • Թվում է, թե Python-ի համայնքը կարևորում է արագ հաքերները, քանի որ դա ինձ համար հեշտ է հետևողականության նկատմամբ: Սրա լավագույն օրինակը matplotlib-ի կոնվենցիան է՝ օգտագործել 112-ի նման թվեր՝ նշանակելով (1,1,2)՝ ենթահողեր ստեղծելիս... այնուամենայնիվ, շնորհակալություն պատասխանի համար: 11.11.2017
  • Գործնականում, @WarrenWeckesser-ը հավանաբար ճիշտ է այն չմաքրելու հարցում: Ասել է թե՝ ես ճիշտ ինձ զգում էի որպես SpaceMonkey, երբ փորձում էի հիշել պարամետրերի արգումենտների տարբերությունը np.zeros((tuple dimensions arg)) ընդդեմ np.random.randn(dim1, dim2, dim3)ի: 18.07.2019

  • 2

    Ես նույն հարցն ունեի. Սա ցույց է տալիս, որ ելքերը նույնական են: Տարբերությունը ներածման ձևաչափի մեջ է (չափերի համար մեկ արկ (կրկնակի կամ ցուցակ) ընդդեմ չափումների արգագների հաջորդականության).

    # np.random.random([2,3]) vs np.random.rand(2,3)
    
    print()
    np.random.seed(1)
    print('  .. np.random.random([2,3]):\n', np.random.random([2,3]))
    print()
    np.random.seed(1)
    print('  .. np.random.rand(2,3):\n', np.random.rand(2,3))
    
    # output
    
     .. np.random.random([2,3]):
     [[4.17022005e-01 7.20324493e-01 1.14374817e-04]
     [3.02332573e-01 1.46755891e-01 9.23385948e-02]]
    
      .. np.random.rand(2,3):
     [[4.17022005e-01 7.20324493e-01 1.14374817e-04]
     [3.02332573e-01 1.46755891e-01 9.23385948e-02]]
    
    17.02.2021
    Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..