2016-03-31 9 views
0

Herhangi bir sayıda 1-D dizileri ve "sütun yığını" bunları sütun vektörleri olarak almak istiyorum. Bu tür bir dizi birden fazla listeye sahip olduğumda, column_stack kullanarak yeterince iyi çalışır, ancak böyle bir dizi tek bir tane olduğunda, column_stack hiçbir etkisi yoktur.Çoğu 1-D dizilerin herhangi bir "sütun yığını" için çoğu NumPythonic yolu

Bu

np.array(np.matrix(j).T) 

çalışmak için alabilirsiniz ama bu şeyleri ele almak için en açık yolu görünmüyor.

[1, 2, 3, 4] gibi tek bir listeyi, bu tür listelerin bir listesini oluşturmak için kullandığım aynı kodla nasıl sütunlandırabilirim?

cevap

1

Benim için çalışır:

In [629]: np.column_stack([[1,2,3]]) 
Out[629]: 
array([[1], 
     [2], 
     [3]]) 

misiniz, bunu yaparken bir ihtimal?

In [631]: np.column_stack([1,2,3]) 
Out[631]: array([[1, 2, 3]]) 

Bu, skalerlerin etkili bir şekilde 0d dizileri olan bir sütun yığını yapıyor. Bunu kodu

Görünüş: array (diziler listeleri dönüştürülmesi) ve daha sonra 1d (veya 0d), bu yeniden geçerse da

arrays = [] 
for v in tup: 
    arr = array(v, copy=False, subok=True) 
    if arr.ndim < 2: 
     arr = array(arr, copy=False, subok=True, ndmin=2).T 
    arrays.append(arr) 
return _nx.concatenate(arrays, 1) 

Bu, aslında, giriş listesinin her bir elemanını geçer array aracılığıyla, 2d olduğundan emin olun (ardından bir transpoze). listelerin

listesi için

np.atleast_2d(np.array([1,2,3])).T 
np.array([1,2,3])[:,None] 
np.array([1,2,3]).reshape(-1,1) 

In [644]: np.atleast_2d([[1,2],[3,4],[4,5]]).T 
Out[644]: 
array([[1, 3, 4], 
     [2, 4, 5]]) 

da atleast_2d için kod bak:

birçok 2d sütun vektörü içine 1d dizi dönüm yolları vardır.

+0

Bize np.column_stack ([1,2,3]) 'ile sorun. – orome

+0

Girdinizin bir dizi dizi veya liste olması gerekiyor. Sen bir skaler listesi verirsin. – hpaulj

+0

Evet, tam olarak. Soru bu. Skalerlerin bir listesi veya bu tür listelerin bir listesi olabilecek girdileri işlemek için NumPythonic yolu nedir. – orome

İlgili konular