Numpy 将数组数组重塑为 1D

Numpy reshape array of arrays to 1D

如何让 x 变成一维数组? 我发现像这样创建 x 很方便,

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

returns

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

returns

((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 时,是否可以重塑它们?

我想你正在寻找一个长度为 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

创建数组时,将列表与 + 连接起来,而不是将它们打包到另一个列表中:

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