如何使用python包含numpy数组的前几项

问题描述:

我有数组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

如何:

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