2013-05-14 66 views
1

我有一个像阵列 -numpy的数组操作

x = array([0, 1, 2, 3,4,5]) 

而且我想这样的输出 -

[] 
[1] 
[1 2] 
[1 2 3] 
[1 2 3 4] 
[1 2 3 4 5] 

我想这个代码 -

y = np.array([np.arange(1,i) for i in x+1]) 

但它使一个列表与我不想要的dtype对象。我希望它不是整数,以便以后可以编制索引。

+3

你不能有不均匀形状的普通numpy的阵列。也就是说,如果你想要一个2d numpy数组和方便的numpy索引和切片,每一行必须是相同的大小。这就是为什么你得到1d数组的一维数组,它就像列表的列表,除了每个项目是一个数组。 – askewchan 2013-05-14 17:43:45

回答

0

而且我想这样

输出就输出这种方式只是一个切片:

import numpy as np 
x = np.array([0, 1, 2, 3, 4, 5]) 

for i in range(1,len(x) + 1): 
    print(x[1:i]) 
+0

这适用于我 – haq 2013-05-14 18:20:19

1

如果我理解正确的问题,是

y = [np.arange(1,i) for i in x+1] 

合适?你可以用y访问补行与y[r]名单,例如,

>>> y[2] 
array([1, 2]) 

或整批:

>>> y 
[array([], dtype=int64), 
array([1]), 
array([1, 2]), 
array([1, 2, 3]), 
array([1, 2, 3, 4]), 
array([1, 2, 3, 4, 5])] 

另外请注意,您可以控制返回的数组的数据类型arange此处设置为dtype=int(或类似)。