pandas Series转numpy后如何重塑得到预期多维形状
问题原因
testpd.to_numpy()生成的是dtype为object的一维数组,长度为2,每个元素是独立的嵌套列表对象,没有把嵌套结构解析为numpy的多维维度。该数组总元素数仅为2,无法直接reshape为需要8个元素的(2,2,2)形状,这也是你执行reshape(2,2)时报错的原因。
解决方法
以下两种方法都可以得到形状为(2,2,2)的目标数组,和直接创建的testnps结构完全一致:
- 方法1:先把Series转为原生嵌套Python列表,再传入numpy构造数组,numpy会自动识别嵌套维度
testnp = np.array(testpd.tolist()) print(testnp.shape) # 运行结果:(2, 2, 2)
- 方法2:用
np.stack沿新轴拼接object数组中的每个子列表元素
testnp = np.stack(testpd.to_numpy()) print(testnp.shape) # 运行结果:(2, 2, 2)
内容的提问来源于stack exchange,提问作者Vance Pyton
相关产品推荐
相关产品推荐

