"Vad är det bästa sättet att kombinera matriser?" Denna fråga är ganska vag och kan betyda några olika saker.
Samkoppling är att lägga till en sak till en annan. Till exempel, sammanfoga matriserna [1,2,3] och [4,5,6] kommer att ge dig [1,2,3,4,5,6]. Detta kan göras på några sätt i Ruby.
Den första är plusoperatören. Detta kommer att lägga till en grupp i slutet av en annan, vilket skapar en tredje grupp med elementen i båda.
Använd alternativt concat metod (+ operatören och concat-metoden är funktionellt ekvivalenta).
Om du gör många av dessa åtgärder kanske du vill undvika detta. Objektskapning är inte gratis, och var och en av dessa operationer skapar en tredje grupp. Om du vill ändra en matris på plats, gör det längre med nya element som du kan använda << operator. However, if you try something like this, you'll get an unexpected result.
I stället för det förväntade [1,2,3,4,5,6] matris vi får [1,2,3, [4,5,6]]. Detta är meningsfullt, den bifogade operatören tar objektet du ger det och lägger till det i slutet av matrisen. Det visste inte eller bry sig om att du försökte lägga till en annan matris till matrisen. Så vi kan slinga över det själva.
Världen "kombinera" kan också användas för att beskriva de inställda operationerna. De grundläggande uppsättningarna för korsning, förening och skillnad finns i Ruby. Kom ihåg att "uppsättningar" beskriver en uppsättning objekt (eller i matematik, siffror) som är unika i den uppsättningen. Om du till exempel skulle göra en inställd operation på matrisen [1,1,2,3] Ruby kommer att filtrera bort den andra 1, även om 1 kan vara i den resulterande uppsättningen. Så var medveten om att dessa uppsättningar är annorlunda än listoperationer. Uppsättningar och listor är i grunden olika saker.
Du kan ta föreningen mellan två uppsättningar med hjälp av | operatör. Detta är operatören "eller", om ett element är i den ena uppsättningen eller den andra, är det i den resulterande uppsättningen. Så resultatet av [1,2,3] | [3,4,5] är [1,2,3,4,5] (kom ihåg att även om det finns två tresor är detta en inställd operation, inte en listoperation).
Korsningen mellan två uppsättningar är ett annat sätt att kombinera två uppsättningar. I stället för en "eller" operation är korsningen mellan två uppsättningar en "och" operation. Elementen i den resulterande uppsättningen är de i både uppsättningar. Och som en "och" operation använder vi & operatören. Så resultatet av [1,2,3] & [3,4,5] är helt enkelt [3].
Slutligen, ett annat sätt att "kombinera" två uppsättningar är att ta sin skillnad. Skillnaden mellan två uppsättningar är uppsättningen av alla objekt i den första uppsättningen som är inte i den andra uppsättningen. Så [1,2,3] - [3,4,5] är [1,2].
Slutligen finns det "dragkedja". Två matriser kan dragas samman och kombinera dem på ett ganska unikt sätt. Det är bäst att bara visa det först och förklara efter. Resultatet av [1,2,3] .zip ([3,4,5]) är [[1,3], [2,4], [3,5]]. Så vad hände här? De två matriserna kombinerades, varvid det första elementet var en lista över alla element i den första positionen för båda matriserna. Dragkedja är lite konstigt och du kanske inte hittar mycket användning för det. Syftet är att kombinera två matriser vars element nära korrelerar.