2016-04-02 30 views
0

Python'da çalışıyorum ve listeler, numpy dizileri ve matrisler ve pandalar veri çerçeveleri arasındaki ilişkileri anlamakta sorun yaşıyorum.Python'da listeler, matrisler ve veri çerçeveleri

Aşağıdakileri biliyorum, bir df'den matrise gitmek için as_matrix() öğesini çağırmak yeterlidir. Şimdi çift listeden bir numpy matrisi oluşturmaya çalışıyorum. Listemde 891 öğenin 3 listesi var (ancak herhangi bir sayı olabilir).

Listenin tmp olduğunu söyle, len(tmp) = 3 ve len(tmp[0]) = 891 var. Sonra tt = numpy.matrix(tmp) yaptım. Şimdi yaparsanız :

print tt.shape 

bu (1,3) 'dir. Şimdi, aynı zamanda

print tt[0].shape 

ve

print tt[0][0].shape 

ve
print tt[0][0][0].shape 

denenmiş ve sonuç her zaman (1,3) Bu benim için bir anlam ifade etmiyor. tt, tmp gibi bir (3, 891) matris olmalı mı? Ben

print len(tmp) 
print len(tmp[0]) 
print([len(row) for row in tmp]) 

yaparsanız

Ben

3 
891 
TypeError: object of type 'NoneType' has no len() 
+2

"Listem 3 listeden oluşan 891 öğe var" <- kanıtlayın. :-) neyi basar ([tmp satırında satır (satır)]) geri döndü? – DSM

+0

Sonunda bir parça ekledim. Sorduğum şeyi yaparsam bir hata alıyorum, ama ben de neden bir ( – user

+1

) matrisine sahip olduğumu düşündüğümü yazdım. Hata mesajı, listenizin * 3 adede kadar 891 sayı içermediğini, Orada bir "Yok" var. Üzerinde anlaşılan bir uzunluk 3 var. 0 elementi, kabul edilen 891 uzunluğuna sahiptir; fakat ilk ya da ikinci elemanın aslında Yok olduğu açıktır. – DSM

cevap

2

Senin sorunun matrisinin bir madde ..... bir matris olmasıdır olsun. Tek bir satırınız olduğundan, tt==tt[0] vb. Dizin oluşturma dizisi farklıdır, ndim(a[0]) daha sezgiseldir ndim(a)-1.

+0

Evet, kodumda bir hataydı. Tüm sütunları kontrol etmeliydim. – user