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í
×
    včera 16:44 | IT novinky

    S koncem roku 2025 skončila standardní podpora operačního systému HP-UX (Hewlett Packard Unix).

    Ladislav Hagara | Komentářů: 5
    včera 14:33 | Nová verze

    K 1. lednu 2026 končí 70leté omezení majetkových autorských práv děl autorů zesnulých v roce 1955, viz 2026 in public domain. V americkém prostředí vstupují do public domain díla z roku 1930, viz Public Domain Day.

    |🇵🇸 | Komentářů: 1
    31.12. 15:00 | Nová verze

    Všem vše nejlepší do nového roku 2026.

    Ladislav Hagara | Komentářů: 10
    31.12. 13:33 | Zajímavý software

    Crown je multiplatformní open source herní engine. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT a GPLv3+. Byla vydána nová verze 0.60. Vyzkoušet lze online demo.

    Ladislav Hagara | Komentářů: 0
    31.12. 12:11 | Zajímavý článek

    Daniel Stenberg na svém blogu informuje, že po strncpy() byla ze zdrojových kódů curlu odstraněna také všechna volání funkce strcpy(). Funkci strcpy() nahradili vlastní funkcí curlx_strcopy().

    Ladislav Hagara | Komentářů: 6
    31.12. 03:00 | Nová verze

    Byla vydána nová verze 25.12.30 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    30.12. 18:55 | IT novinky

    Společnost Valve publikovala přehled To nej roku 2025 ve službě Steam aneb ohlédnutí za nejprodávanějšími, nejhranějšími a dalšími nej hrami roku 2025.

    Ladislav Hagara | Komentářů: 0
    30.12. 16:11 | Komunita

    Byly publikovány výsledky průzkumu mezi uživateli Blenderu uskutečněného v říjnu a listopadu 2025. Zúčastnilo se více než 5000 uživatelů.

    Ladislav Hagara | Komentářů: 0
    30.12. 03:33 | Bezpečnostní upozornění

    V dokumentově orientované databázi MongoDB byla nalezena a v upstreamu již opravena kritická bezpečností chyba CVE-2025-14847 aneb MongoBleed.

    Ladislav Hagara | Komentářů: 0
    29.12. 23:11 | IT novinky

    Při úklidu na Utažské univerzitě se ve skladovacích prostorách náhodou podařilo nalézt magnetickou pásku s kopií Unixu V4. Páska byla zaslána do počítačového muzea, kde se z pásky úspěšně podařilo extrahovat data a Unix spustit. Je to patrně jediný známý dochovaný exemplář tohoto 52 let starého Unixu, prvního vůbec programovaného v jazyce C.

    NUKE GAZA! 🎆 | Komentářů: 23
    Které desktopové prostředí na Linuxu používáte?
     (0%)
     (0%)
     (0%)
     (33%)
     (67%)
     (0%)
     (0%)
     (0%)
     (0%)
     (33%)
    Celkem 3 hlasů
     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: 486×
    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.