如何展平(n,)形状numpy数组

时间:2018-10-11 23:26:39

标签: python numpy

我有一个名为data的变量,我想将其展平。

现在data.shape = (10, )。数据中的每个元素都有一个形状(5000,64)。我想做我的data.shape = (10, 5000, 64)

我该怎么做?我在下面尝试了许多方法,但没有一个起作用:

b = np.concatenate(t for t in data)
b = np.stack(t for t in data)
b = np.hstack(t for t in data)

有人对此有任何想法吗?

2 个答案:

答案 0 :(得分:0)

In [50]: t = np.zeros(3,object)
In [51]: t[0]=np.ones((3,2),int)
In [52]: t[1]=np.ones((3,2),int)
In [53]: t[2]=np.ones((3,2),int)
In [54]: t
Out[54]: 
array([array([[1, 1],
       [1, 1],
       [1, 1]]),
       array([[1, 1],
       [1, 1],
       [1, 1]]),
       array([[1, 1],
       [1, 1],
       [1, 1]])], dtype=object)
In [55]: np.stack(t)
Out[55]: 
array([[[1, 1],
        [1, 1],
        [1, 1]],

       [[1, 1],
        [1, 1],
        [1, 1]],

       [[1, 1],
        [1, 1],
        [1, 1]]])
In [56]: _.shape
Out[56]: (3, 3, 2)

np.stack(x for x in t)也可以,但是不需要额外的迭代层。

当您说某事不起作用时,您需要详细说明。错误到底是什么?您尝试过的每件事都是一样的错误吗?没有这样的信息,您将得到我的答案-一个似乎与您的描述匹配的测试用例。

hstack可以工作,但是以不同的方式加入数组。

concatenate不适用于(t for t in x)输入,但是可以使用(x)

假设我对它是一个对象dtype数组的猜测是正确的,那么flatten就不会出现这种情况。 numpy展平就像形状改变者ravel。但这是不同的。我在对象数组中有数组,实际上是数组列表,而不是多维数组。

答案 1 :(得分:0)

我解决了这个问题。问题是我的数据是张量的numpy数组,您必须使用tf.stack来执行此操作。