如何通用简洁地从任意长度二维数组元素构建NumPy目标数组
适配任意长度imb_data的通用实现
原有硬编码索引的写法仅支持长度为5的imb_data,要适配任意第一维长度的二维imb_data,只需要通过遍历自动生成所有子数组的副本,再拼接后续固定内容即可,逻辑和原实现完全等价。
实现代码
final_array_transpose = np.array( # 遍历imb_data第一维,按顺序生成所有子数组的副本,替代原手动枚举的imb_data[0].copy()到imb_data[4].copy() [sub_arr.copy() for sub_arr in imb_data] + # 后续固定内容完全保留原逻辑,不做任何修改 [ bin_label_str, range(len(imb_data[0])), bin_label_str, bin_label, bin_label ], dtype=object )
逻辑说明
- 该写法不限制
imb_data的第一维长度,无论长度是5还是其他任意合法值,都能按原顺序取到所有子数组的副本 - 遍历顺序和手动写索引的顺序完全一致:从
imb_data[0]开始,到imb_data最后一个元素结束 - 最终生成的数组结构、数据类型和针对长度为5场景编写的代码输出完全一致,不需要调整后续业务逻辑
- 如果需要单独调试副本生成环节,也可以把列表推导部分拆为独立变量,不会影响最终运行结果
内容的提问来源于stack exchange,提问作者Brandon Bonifacio
相关产品推荐
相关产品推荐

