abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:33 | Zajímavý článek

    Jak nahrávat zvuk z webového prohlížeče na Linuxu s PipeWire pomocí Nahrávání zvuku (Sound Recorder) a Helvum případně qpwgraph, článek na webu Libre Arts.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | Komunita

    Vývoj webového serveru a reverzní proxy nginx byl přesunut z Mercurial na GitHub.

    Ladislav Hagara | Komentářů: 1
    včera 17:44 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2024.9.

    Ladislav Hagara | Komentářů: 1
    včera 17:22 | Bezpečnostní upozornění

    České bezpečnostní instituce, jmenovitě Vojenské zpravodajství (VZ) a Bezpečnostní informační služba (BIS), ve spolupráci s americkou Agenturou pro kybernetickou a infrastrukturní bezpečnost (CISA), Federálním úřadem pro vyšetřování (FBI), Národní bezpečností agenturou (NSA) a dalšími mezinárodními partnery ze Spojeného království, Austrálie, Kanady, Německa, Nizozemska, Estonska, Ukrajiny a Lotyšska vydaly upozornění (

    … více »
    Ladislav Hagara | Komentářů: 13
    včera 03:00 | Nová verze

    Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.93 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání. Ve verzi 1.93 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    včera 02:00 | IT novinky

    Společnost Laravel stojící za stejnojmenným open source PHP frameworkem získala investici 57 milionů dolarů od společnosti Accel. Především na Laravel Cloud.

    Ladislav Hagara | Komentářů: 2
    včera 01:00 | Nová verze

    Byla vydána verze 1.81.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Řešena je také zranitelnost CVE-2024-43402. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    5.9. 17:11 | Nová verze

    Vládní CERT vydal (𝕏) novou verzi nástroje maldump. Ten slouží k extrakci souborů z karantén různých antivirových programů. A to jak z živého systému, tak z obrazu disku.

    Ladislav Hagara | Komentářů: 8
    5.9. 16:44 | Pozvánky

    Meeting ESP komunity - podzimní edice 2024 proběhne v pátek 18. října v Brně. V přípravě jsou přednášky od vývojářů z Espressifu, lokálních firem i zapálených nadšenců do ESP a také praktický workshop a ukázky nových čipů.

    Ladislav Hagara | Komentářů: 0
    5.9. 14:11 | Nová verze

    Systém pro správu hlášení chyb Bugzilla byl podle plánu vydán v nových verzích 5.2, 4.4.14, 5.0.4.1, 5.3.3 a 5.9.1, kde 5.2 představuje novou stabilní řadu, 4.4.14 by měla být poslední ve staré řadě 4.4, jíž končí podpora na přelomu roku, 5.0.4.1 je udržovací opravné vydání staré řady 5.0, dosavadní stabilní řada 5.1 byla přejmenována na 5.3 (nyní 5.3.3) a konečně vývojová verze 5.9.1 směřuje k budoucímu velkému vydání Bugzilly 6.

    Fluttershy, yay! | Komentářů: 0
    Rozcestník

    Dotaz: Python - jak vektorizovat metodu ve třídě?

    24.7.2014 22:43 Olaf
    Python - jak vektorizovat metodu ve třídě?
    Přečteno: 447×
    Zdarec, z nadpisu dotazu je to zřejmé: mám jistou třídu, třída má funkci, tedy teď už metodu, která musí pracovat s vektory. Na převod své metody (funkce) používám z Numpy tradiční np.vectorize(fce), kde fce je ona metoda. Ve třídě to ale nejde dobře: když dám fce = classmethod(np.vectorize(fce)), tak Python pak řve, že třída neobsahuje použité atributy (přitom tam jsou). Pokud takto metodu nezvektorizuju, tak to jede OK a atributy jsou přístupné. Jinými slovy, vektorizovat metodu přes numpy vectorize nejde? Jestli ne, tak to prostě proženu samostatným cyklem, no.

    Odpovědi

    25.7.2014 02:29 chrono
    Rozbalit Rozbalit vše Re: Python - jak vektorizovat metodu ve třídě?
    Nefunguje to ani ako dekorátor?

    a teda niečo ako:
    @np.vectorize
    def fce(self, ...):
        pass
    25.7.2014 03:32 Olaf
    Rozbalit Rozbalit vše Re: Python - jak vektorizovat metodu ve třídě?
    E-e, tohle vůbec nevezme. Hází chybu hned.
    25.7.2014 10:26 petr b
    Rozbalit Rozbalit vše Re: Python - jak vektorizovat metodu ve třídě?
    Proč classmethod? numpy.vectorize nejde na normálních metodách, ale bude fungovat na staticmethod.
    import numpy as np
    
    class VC(object):
        @staticmethod
        @np.vectorize
        def myfunc(a, b):
            "Return a-b if a>b, otherwise return a+b"
            if a > b:
                return a - b
            else:
                return a + b
    
    
    print VC.myfunc([1, 2, 3, 4], 2)
    
    o = VC()
    print o.myfunc([1, 2, 3, 4], 2)
    
    Ale pak proč to mít ve třídě?
    26.7.2014 04:44 Olaf
    Rozbalit Rozbalit vše Re: Python - jak vektorizovat metodu ve třídě?
    Na ja, aber... Ta metoda musí fungovat s atributy z třídy. Prostě jsem to a) prohnal loopem, b) nakonec hodil ven jako samostatnou funkci.
    25.7.2014 14:20 Sten
    Rozbalit Rozbalit vše Re: Python - jak vektorizovat metodu ve třídě?
    První parametr je self, ale Numpy se jej pokusí vektorizovat. Zkusil bych:
    fce = np.vectorize(fce, excluded=['self'])
    
    Navíc classmethod dělá trochu něco jiného, než chcete.
    26.7.2014 04:47 Olaf
    Rozbalit Rozbalit vše Re: Python - jak vektorizovat metodu ve třídě?
    Dík, já to zkoušel různě, nic nebylo úspěšně. Jak píšu výše, prostě jsem nakonec tu funkci hodil ven a instanci třídy použil jako parametr. Chtěl jsem to původně mít uspořádáno uvnitř, ale to je vlastně fuk (šlo by to, s vlastním loopem, ale pak by to bylo pomalejší, protože některé výpočty by se dělaly znova a znova). Ještě jednou díky za snahu.
    26.7.2014 12:01 logik
    Rozbalit Rozbalit vše Re: Python - jak vektorizovat metodu ve třídě?
    Jestli chceš efektivně vektorizovat, tak se koukni na cython a prange.

    Pokud je vektorizace kvůli syntaktickýmu cukru, tak si tu vektorizovanou metodu napiš jako vnitřní funkci classmetody objektu, kterou v tý classmetodě jen nadefinuješ a zavoláš. Sice tam bude o jedno volání fce víc, ale to zpravidla nevadí (pokud ji teda nevoláš stotisíckrát v cyklu).
    26.7.2014 12:37 logik
    Rozbalit Rozbalit vše Re: Python - jak vektorizovat metodu ve třídě?
    Jinak nevím, k čemu přesně používáš to np.vectorize, ale mam zkušenosti, že rychlejší je to napsat čistě jako funkci rovnou příjmající i argumenty typu np.ndarray.

    np.vectorize totiž tu tvojí "vektorizovanou" funkci zavolá pro každej prvek pole, zatímco pokud použiješ "vektorovou aritmetiku" - tzn. přímo operátory nad np.ndarray, tak je volána jen jednou a pro výpočet matematických operací se použijou vektorizovaný rutiny z matematickejch knihoven (ATLAS, OpenBlas apod.)

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.