2009-08-07 21 views
11

Tamam, bu Matrise sahip olduğumu düşünün: {{1,2}, {2,3}} ve {{4,1,2}, {5,2,3}} tercih ederim. Yani matrise bir sütun hazırladım. Bunu yapmanın kolay bir yolu var mı?Matris için sütun nasıl?

En iyi öneri şudur:

PrependColumn[vector_List, matrix_List] := 
Outer[Prepend[#1, #2] &, matrix, vector, 1] 

Ama daha kod yükleme gerektirir sürekli kodu obfuscates ve. Bu bir şekilde inşa edilmiş değil mi? MapThread bunun gibi görevler için en sık kullanacağınız fonksiyonu (Ben hepsini kullanmaktır Genel olarak

PrependColumn[vector_List, matrix_List] := MapThread[Prepend, {matrix, vector}]; 

:

cevap

11

Mathematica 6'da tanıtıldı az Karartılmış çözüm

matrix = {{1, 2}, {2, 3}} 
vector = {{4}, {5}} 

[email protected]{{vector, matrix}} 

Güzel hüner olmalıdır:

7

Ben az belirsiz Bunu yapmanın şu yolu olduğunu düşünüyorum Zaman Grid ile güzel biçimlendirmeden önce dizilere etiket eklerken zaman ve Prepend[#1, #2]& eşdeğer yerine Prepend kullanmak şeyler daha net ve daha özlü hale getirebilirsiniz. ArrayFlatten yana

PrependColumn[vector_List, matrix_List] := 
    Transpose[Prepend[Transpose[matrix], vector]] 
7

Ben en yaygın yolu, devrik başa getirebilir ve tekrar devrik olduğuna inanıyoruz Herhangi bir matris bloğunu 0 ile değiştirdiğinizde, size doğru boyutta sıfır blok verir.

0

THE ... KESİNLİKLE ... ÇOK İYİLEŞTİR ... dizi RandomReal[100,{10^8,5}] çeşitli yöntemler üzerinde benim testler bir sütun eklemek veya eklemek için FASTEST yöntemi (çocuklar, evde deneyin ... makineniz değilse ...: Bu hız ve bellek için oluşturulmuş, bu boyutta bir dizi işlemler bilgisayarınızı asmak için garanti edilir): Append[tmp\[Transpose], [email protected]@tmp]\[Transpose]. 'u Prepend ile değiştirin.

Bir sonraki en hızlı şey şu: Table[tmp[[n]]~Join~{n}, {n, [email protected]}] - neredeyse iki katı yavaş.

+4

Görünüşe göre, http://stackoverflow.com/questions/4270802/inserting-into-a-2d-list/4270825#4270825 adresindeki cevabı kaçırdınız. ArrayFlatten'in kullanılması daha hızlı görünüyor. –

İlgili konular