Python 堆叠二维阵列numpy

Python 堆叠二维阵列numpy,python,arrays,numpy,Python,Arrays,Numpy,假设t是一个二维的Numpy数组(30,5)(或者实际上,(1,30,5))和x也是一个形状(1000,5)的Numpy数组。我试图将x中的二维数据转换为三维数据,新数组中的每个矩阵是x中1000行中的30行(连续)。在t和x[:30]的元组上使用np.vstack时,或 t = np.vstack((t, x[:30])) 我的输出的形状是(60,5),但我希望它是(2,30,5)。我该怎么做 更新:我尝试了dkv的建议,通过以下方式实施: t = np.random.rand(1,30,5

假设
t
是一个二维的Numpy数组
(30,5)
(或者实际上,
(1,30,5)
)和
x
也是一个形状
(1000,5)
的Numpy数组。我试图将x中的二维数据转换为三维数据,新数组中的每个矩阵是
x
中1000行中的30行(连续)。在
t
x[:30]
的元组上使用
np.vstack
时,或

t = np.vstack((t, x[:30]))
我的输出的形状是
(60,5)
,但我希望它是
(2,30,5)
。我该怎么做

更新:我尝试了dkv的建议,通过以下方式实施:

t = np.random.rand(1,30,5)
for i, n in zip(x_data, np.arange(len(x_data))):
    l = len(x_data) - 29
    if n < l:
        t = np.vstack((t,x_data[n:n+30].reshape(1,30,5)))

t = np.delete(t, 0)
print(t[:2], t.shape)


>>> [ 0.38009933  0.82223491]
>>> (1691249,)
t=np.random.rand(1,30,5)
对于zip中的i,n(x_数据,np.arange(len(x_数据))):
l=len(x_数据)-29
如果n>> [ 0.38009933  0.82223491]
>>> (1691249,)

现在它是一维的。有什么想法吗?

有很多方法。一是

np.r_['0,3,1', t, x[:30]]

r
是一种“通用级联器”。本例中的第一个参数指示它沿轴0连接,使数组参数为3d,并在必要时填充尺寸,使原始的第零个轴成为填充数组中的轴1。

您需要重塑x[:30]切片以匹配t的尺寸,以便实际将它们堆叠到正确的尺寸

t = np.ones((1,30,5))
x = np.ones((1000,5))
out = np.vstack((t, x[:30].reshape(1,30,5)))
out.shape
>>> (2L, 30L, 5L)
t.重塑(2,30,5)
?注意(30,5)和(1,30,5)是不同的形状。(30,5)是一个包含30行5列的矩阵。(1,30,5)看起来像一个30x5的水平平面。您使用的np.delete()不正确。试着在那行之前打印t.shape,看看它是正确的形状。