为何np.array对同操作的ndarray列表返回不同维度?
为什么np.array_split后转np.array会出现维度差异?
这俩情况的差异根源在np.array_split的分割逻辑和np.array()对不同形状子数组的处理规则:
第一种情况:121不能被5整除,np.array_split会生成长度不均的子数组。具体来说,121拆分后是25、25、24、24、23,对应每个子数组的shape是
(25,3072)、(25,3072)、(24,3072)、(24,3072)、(23,3072)。因为这些子数组的第一维度长度不一样,np.array()没办法把它们堆叠成更高维的数组,只能把每个子数组当作单独的元素,最终生成一个shape为(5,)的一维object数组(数组里的每个元素是不同形状的ndarray)。第二种情况:1000能被5整除,1000/5=200,所以每个子数组的shape都是
(200,3072),所有子数组的形状完全一致。这时候np.array()会自动把它们沿新的维度堆叠起来,最终得到shape为(5,200,3072)的三维数组。
你可以自己验证一下,比如在第一种情况里执行:
print([arr.shape for arr in train_folds_X])
就能看到每个子数组的形状确实不一样。
内容的提问来源于stack exchange,提问作者regaga
相关产品推荐
相关产品推荐

