2015-06-20 188 views
0

如何让x变成1D数组? 我发现它方便地创建X这样,Numpy将数组重新排列为1D

x=np.array([[0,-1,0]*12,[-1,0,0]*4]) 
print x 
print len(x) 

回报

array([ [0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0], 
     [-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0]], dtype=object) 

2 

我也试图使像这样,但长度仍然是2

y=((0,1,0)*12,(-1,0,0)*4) 
print y 

回报

((0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0), (-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0)) 

我一直在使用numpy.reshape(在x和y)的尝试:

np.reshape(x,48) 

,但我得到这个错误:

ValueError: total size of new array must be unchanged 

是否有可能当我宣布他们像重塑x或y我做了?

+0

你'x'是不同长度的2所列出,36和12你想要48之一的长度? – hpaulj

+0

是的,其实第一个答案这个很好 –

回答

2

当您创建磁盘阵列,串联名单与+而不是另一个列表它们包装:

x = np.array([0,-1,0]*12 + [-1,0,0]*4) 
0

我认为你正在寻找让有48尝试的长度一维数组numpy的,

import numpy as np 
    x=np.array([[0,-1,0]*12]) 
    x= np.append(x,[-1,0,0]*4) 
    print (x) 
    print (len(x)) 

这个产量,

[ 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 
-1 0 0 -1 0 0 -1 0 0 -1 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0] 
48 
+0

谢谢。实际上,我有一个更长的数组,其中有更多的12个组,所以我想像上面的+方法一样在单行中创建它。 –