abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:00 | Nová verze

    Byla vydána nová verze 9.18 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Nově také pro NanoPi R3S, R3S LTS, R76S a M5. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Nová verze

    bat, tj. vylepšený cat se zvýrazňováním syntaxe a integrací s gitem, byl vydán ve verzi 0.26.0.

    Ladislav Hagara | Komentářů: 1
    včera 19:33 | Nová verze

    Byla vydána první verze 0.0.1 [Mastodon] multipatformního renderovacího jádra webového prohlížeče Servo (Wikipedie). Vývoj Serva započal v roce 2012 v Mozilla Corporation. V roce 2020 bylo Servo předáno nadaci Linux Foundation. Servo je napsané v programovacím jazyce Rust.

    Ladislav Hagara | Komentářů: 0
    včera 15:11 | IT novinky

    Cloudovou službu Amazon Web Services (AWS) americké firmy Amazon dnes postihl globální výpadek. Omezil dostupnost řady aplikací a webů, například populární platformu Snapchat nebo aplikaci s prvky umělé inteligence (AI) Perplexity. Podle webu Downdetector hlásily problémy také uživatelé obchodu Amazon, streamovací platformy PrimeVideo nebo platební služby PayPal.

    Ladislav Hagara | Komentářů: 6
    včera 13:33 | Zajímavý software Ladislav Hagara | Komentářů: 0
    včera 12:44 | Pozvánky

    Od 3. do 16. listopadu proběhnou Dny AI 2025. V úterý 11. listopadu proběhne Open source AI day v Red Hatu v Brně.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 158 (pdf) a Hello World 28 (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 01:44 | Komunita

    Vývojáři GIMPu nově vydávají oficiální snap balíčky GIMPu. Jsou sestavovány přímo v jejich CI (Continuous Integration) systému.

    Ladislav Hagara | Komentářů: 10
    19.10. 15:22 | Nová verze

    Správce sbírky fotografií digiKam byl vydán ve verzi 8.8.0. Jedná se o převážně opravné vydání provázené aktualizacemi knihoven. Novinky zahrnují implicitní použití systémového barevného profilu monitoru, import/export hierarchie štítků, editační nástroj rozostření aj.

    |🇵🇸 | Komentářů: 1
    17.10. 13:22 | IT novinky

    Steve Jobs a superpočítač Cray-1 budou vyobrazeny na pamětních jednodolarových mincích vyražených v příštím roce v rámci série Americká inovace. Série má 57 mincí, tj. 57 inovací. Poslední 4 mince budou vyraženy v roce 2032.

    Ladislav Hagara | Komentářů: 15
    Jaké řešení používáte k vývoji / práci?
     (37%)
     (47%)
     (20%)
     (20%)
     (23%)
     (18%)
     (21%)
     (18%)
     (18%)
    Celkem 246 hlasů
     Komentářů: 14, poslední 14.10. 09:04
    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: 483×
    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.