|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> python Programming >> Content

    Vad är processen för att generera en numpy kartesisk produkt i Python?

    Numpy har inte en inbyggd funktion för att direkt beräkna den kartesiska produkten. Funktionen "IterteOls.Product" från Pythons standardbibliotek är i allmänhet det mest effektiva sättet att uppnå detta, särskilt för större matriser. Du kan emellertid sedan konvertera resultatet till en numpy matris om det behövs.

    Så här kan du göra det, tillsammans med förklaringar och jämförelser med andra mindre effektiva metoder:

    Metod 1:Använda `itertools.product '(rekommenderas)

    Detta är den mest effektiva och pythoniska metoden:

    `` `python

    Importera numpy som NP

    Från Itertools importprodukt

    def cartesian_product_iterTools (matriser):

    "" "Genererar den kartesiska produkten från flera matriser med Iterertools.Product.

    Args:

    Matriser:En lista över numpy matriser.

    Returnerar:

    En numpy matris som representerar den kartesiska produkten. Returnerar ingen om ingången är ogiltig.

    "" "

    om inte isinstance (matriser, lista):

    returnera ingen

    om inte alla (iSinstance (arr, np.ndarray) för arr i matriser):

    returnera ingen

    returnera np.array (lista (produkt (*matriser))))

    Exempel Användning:

    array1 =np.array ([1, 2])

    array2 =np.array ([3, 4])

    array3 =np.array ([5, 6])

    resultat =cartesian_product_iterTools ([array1, array2, array3])

    Skriv ut (resultat)

    Utgång:[[1 3 5]

    [1 3 6]

    [1 4 5]

    [1 4 6]

    [2 3 5]

    [2 3 6]

    [2 4 5]

    [2 4 6]]

    `` `

    Metod 2:Använd kapslade slingor (mindre effektiv, undvik för stora matriser)

    Denna metod är konceptuellt enklare men betydligt långsammare för större ingångsuppsättningar:

    `` `python

    Importera numpy som NP

    def cartesian_product_nested_loops (matriser):

    "" "Genererar den kartesiska produkten med kapslade slingor (mindre effektiv)." "" "

    om inte alla (iSinstance (arr, np.ndarray) för arr i matriser):

    returnera ingen

    num_arrays =len (matriser)

    Former =[ARR.Shape för ARR in Arrays]

    result_shape =(np.prod ([form [0] för form i former]), num_arrays)

    resultat =np.zeros (result_shape, dtype =np.int32)

    För i, arr i uppräkning (matriser):

    indexer =[skiva (ingen)] * num_arrays

    Indexer [i] =skiva (ingen)

    # Använda avancerad indexering för att generera kartesisk produkt

    arr_repeated =np.tile (arr, (np.prod ([sh [0] för sh i former [:i] + former [i + 1:]]), 1))

    Resultat [:, i] =arr_repeated.FRESHAPE (result_shape [0])

    avkastningsresultat

    resultat =cartesian_product_nested_loops ([array1, array2, array3])

    Skriv ut (resultat)

    `` `

    Varför `itertools.product` föredras:

    * Effektivitet: `itertools.product 'är mycket optimerad för att generera kartesiska produkter. Det undviker att skapa stora mellanliggande matriser, vilket gör det mycket mer minneseffektivt, särskilt när man hanterar många eller stora inmatningsuppsättningar.

    * läsbarhet: Koden som använder `itertools.product 'är renare och lättare att förstå.

    Den kapslade slingmetoden, samtidigt som den underliggande konceptet illustrerar, blir drastiskt långsammare och mindre minneseffektivt när antalet ingångsuppsättningar eller deras storlekar ökar. Därför använder alltid `itertools.product` för att generera kartesiska produkter i Python, särskilt inom ett numpy -sammanhang. Endast tillgripa kapslade slingor för utbildningsändamål eller mycket små, enkla exempel. Kom ihåg att hantera potentiella fel, som att tillhandahålla en inmatning eller icke-numpy matriser, som visas i exemplet med felkontroll.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Hur man gör en kopia av ett objekt med Python
    ·Hur man skapar Tidsfördröjning i Python
    ·Hur till Bädda VBS i Python
    ·Hur man uppgraderar från Python 2,5-2,6
    ·Hur konvertera en sträng till en lista
    ·Hur du tar bort alla förekomster av en klass i Python
    ·Hur man installerar IPRE Python
    ·Vilka program använder Python
    ·Hur hittar indexet av en sträng i Python
    ·Hur man testar i Python Om en kropp är i en klass
    Utvalda artiklarna
    ·Hur du ändrar markören till en anpassad markör för …
    ·Hur man installerar Lisp på OSX
    ·Hur man använder en extern php-fil i HTML
    ·Hur man skapar ett Flash PHP Mysql Webbplats
    ·Hur bevara Variabler i VBA
    ·Vilka är fördelarna och nackdelarna med att skriva op…
    ·Hur att stänga en JFrame
    ·Så ringer en Boolean metod i Java i en annan klass
    ·Hur får man C + + för att subtrahera tal
    ·Vad är skillnaden mellan buffring och blockering?
    Copyright © Dator Kunskap https://www.dator.xyz