Arrays ValueError:所有输入数组必须具有相同的形状

Arrays ValueError:所有输入数组必须具有相同的形状,arrays,python-3.x,numpy,Arrays,Python 3.x,Numpy,我试图执行一个代码,但得到了这个值错误。Source.pkl文件包含100个元素,如随附的array.png所示 如索引0处的图所示,有16个numpy数组,所有数组都具有形状(1,59),因此,第一个元素具有形状(16,1,59)。在索引1处有11个numpy数组,所有数组的形状都是(1,59),所以,现在第二个元素的形状是(11,1,59),其他元素也是如此 如何使所有阵列具有相同的形状 这里有两个选择: 将零数组追加到每个列表,直到所有列表的大小相同。在您的例子中,假设16是所有列表中最

我试图执行一个代码,但得到了这个值错误。Source.pkl文件包含100个元素,如随附的array.png所示

如索引0处的图所示,有16个numpy数组,所有数组都具有形状(1,59),因此,第一个元素具有形状(16,1,59)。在索引1处有11个numpy数组,所有数组的形状都是(1,59),所以,现在第二个元素的形状是(11,1,59),其他元素也是如此

如何使所有阵列具有相同的形状

这里有两个选择:

将零数组追加到每个列表,直到所有列表的大小相同。在您的例子中,假设16是所有列表中最大的一个,您必须将(1,59)形状的数组附加到每个列表中,直到它的大小为16为止

但是,这是浪费空间。另一个选择是:

将列表连接到一个大列表,然后将大列表转换为numpy数组。使用另一个列表记录哪个数组最初位于哪个列表中。 下面是一个示例代码,但我尚未对其进行测试:

pickle_in = open("source.pkl","rb")
predictions = np.load(pickle_in)[0:100]
wrap_list = []
index_map = []
for i in range(len(predictions)):
    pred = predictions[i]
    wrap_list += pred
    index_map += [i for _ in range(len(pred))]
in_predictions = np.array(wrap_list)
pickle_in.close()

我希望这能对您有所帮助。

这是可行的,但有没有办法连接第一个数组的元素,使形状在索引0处变成(16,59),在索引1处变成(11,59)等等?然后我可以执行零填充,使它们具有相同的形状。谢谢你,当然可以。只需使用
np.concatenate(x,y)
,例如,如果
x.shape=(1,59)
y.shape=(1,59)
z=np.concatenate(x,y)
,那么
z.shape=(2,59)
pickle_in = open("source.pkl","rb")
predictions = np.load(pickle_in)[0:100]
wrap_list = []
index_map = []
for i in range(len(predictions)):
    pred = predictions[i]
    wrap_list += pred
    index_map += [i for _ in range(len(pred))]
in_predictions = np.array(wrap_list)
pickle_in.close()