如何从1D数组与3D数组生成2D数组?适配pr尺寸变化方案
更优的自动化实现方式
你可以利用numpy的np.repeat函数实现完全自动化的逻辑,无需随pr的尺寸变化修改代码,核心思路是自动计算每个pr元素需要重复的次数,再批量生成重复后的数组:
import numpy as np pr = np.array([100, 50, 20]).reshape(-1,1) arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [9, 10, 11]], [[12, 13, 14], [15, 16, 17]]]) # 自动计算每个pr元素需要重复的次数:对应arr每个第一维度子块展平后的元素总数 repeat_count = arr.shape[1] * arr.shape[2] # 批量重复pr中的每个元素对应次数 p_arr = np.repeat(pr, repeat_count, axis=0) # 展平3D数组并转为列向量 arr_flat = arr.flatten().reshape(-1, 1) # 横向拼接得到最终2D数组 data = np.hstack((p_arr, arr_flat))
逻辑说明
repeat_count通过arr的后两个维度乘积自动计算,无需手动指定重复次数;np.repeat(pr, repeat_count, axis=0)会遍历pr的所有元素,每个元素重复repeat_count次,不管pr的长度是2、3还是更多,都能自动适配;- 最终效果和你手动实现的完全一致,但扩展性更强,无需修改代码即可适配
pr尺寸变化。
内容的提问来源于stack exchange,提问作者Tee
相关产品推荐
相关产品推荐

