我有一个名为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)
有人对此有任何想法吗?
答案 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来执行此操作。