Arrays ValueError:所有输入数组必须具有相同的形状
我试图执行一个代码,但得到了这个值错误。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数组。使用另一个列表记录哪个数组最初位于哪个列表中。 下面是一个示例代码,但我尚未对其进行测试: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是所有列表中最
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()