2011-04-14 33 views
0

我有數組d,我想要數組d2 行的項數不一樣。如何使用python包含numpy數組的前幾項

d= [ ['q', 'u', 's', 'a', 'p', 'e', 'a'] 
    ['500', 'G', 'G', 'C', 'C', 'P', '04/12/2011', '' ] 
    ['500', 'G', 'G', 'F', 'C', 'P', '04/12/2011', ''] 
    ['5', 'ZUMZ', 'ZUMZ', 'C', 'C', 'B', '04/12/2011', ''] 
    ['2', 'ZUMZ', 'ZUMZ', 'F', 'C', 'B', '04/12/2011', ''] 
    ['7', 'ZUMZ', 'ZUMZ', 'M', 'C', 'B', '04/12/2011', '']] 

只有前五個itmes。

d2= [ ['q', 'u', 's', 'a', 'p'] 
     ['500', 'G', 'G', 'C', 'C'] 
     ['500', 'G', 'G', 'F', 'C'] 
     ['5', 'ZUMZ', 'ZUMZ', 'C', 'C'] 
     ['2', 'ZUMZ', 'ZUMZ', 'F', 'C'] 
     ['7', 'ZUMZ', 'ZUMZ', 'M', 'C']] 


f = urllib.urlopen(url) 
f = csv.reader(f) 
d= np.asarray(list(f), dtype= 'object') 
print d 
m= d[:,:]     
print m 

上面我和M = d試[:,0:5]

+0

'm = d [:,0:5]'應該剛好返回一個數組的前五列。你會得到什麼? – Andrey 2011-04-14 12:49:51

+0

索引太多。 – Merlin 2011-04-14 13:12:11

+0

@ user428862和@Andrey:問題是,如果列表的列表是(N,M)並且使用對象dtype,則會得到一個(N,)數組,其中每個元素都是一個列表,而不是數組M元素。 – JoshAdel 2011-04-14 13:29:28

回答

1

如何:

m = np.array([x[:5] for x in d], dtype=object) 

儘管如果他們都是字符串,你應該使用一個字符串,D型,而不是。

+0

字符串引發錯誤。 – Merlin 2011-04-14 12:52:33

+0

@ user428862:我不是指'dtype = string',而是一個字符串dtype,它可能是'dtype ='S8''或'dtype =(str,16)'等。 – JoshAdel 2011-04-14 13:33:40

+0

哦,謝謝,會不會有速度,可能更緊湊,對嗎? – Merlin 2011-04-14 14:58:13

相關問題