Python中如何正确展平高维numpy数组得到指定维度的输出?
你写的np.reshape(X, (X.shape[0],X.shape[1]*X.shape[2]*X.shape[3]))逻辑本身是正确的,出现输出和原数组一致的问题,是因为numpy的reshape方法不会修改原数组,只会返回修改形状后的新数组,你需要将返回结果赋值给变量才能拿到转换后的数组。
通用实现方法
方法1:使用reshape自动维度推断(最推荐)
不需要手动计算剩余维度的乘积,传入-1即可让numpy自动计算匹配的维度大小,代码更简洁且适配任意维度的输入:
Y = X.reshape(X.shape[0], -1)
运行后Y的形状就是(2, 12),和你预期的输出完全一致。
方法2:对每个样本单独展平
你也可以遍历第一维的每个样本,用ravel()方法展平后再合并为新数组:
Y = np.array([sample.ravel() for sample in X])
验证说明
针对你给出的示例数组X,以上两种方法的输出均为:
array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])
完全符合你的目标需求。
内容的提问来源于stack exchange,提问作者user3318590
相关产品推荐
相关产品推荐

