如何正确使用np.reshape()将特定1D数组转换为3D数组
解决方法
先拆解原数组的规律:每4个元素为一组,每组第一个是核心值(比如x、y),后面跟着3个需要配对的元素(a、b、c)。按以下两步处理即可得到目标结构:
- 拆分原数组为分组:把一维数组按每4个元素切分,得到包含两个子数组的列表。
- 生成配对结构:对每个分组,用核心值分别和后面的3个元素配对,组成子数组,再把这些子数组汇总成最终的3D结构。
用Python实现的代码如下:
arr = ['x','a','b','c','y','a','b','c'] # 第一步:按每4个元素拆分分组 groups = [arr[i:i+4] for i in range(0, len(arr), 4)] # 第二步:生成目标3D数组 arr2 = [] for group in groups: key = group[0] # 用key和后面每个元素配对 pairs = [[key, val] for val in group[1:]] arr2.append(pairs) print(arr2) # 输出:[[['x', 'a'], ['x', 'b'], ['x', 'c']], [['y', 'a'], ['y', 'b'], ['y', 'c']]]
也可以用一行列表推导式简化写法:
arr = ['x','a','b','c','y','a','b','c'] arr2 = [[[g[0], val] for val in g[1:]] for g in [arr[i:i+4] for i in range(0, len(arr), 4)]]
内容的提问来源于stack exchange,提问作者user13686580
相关产品推荐
相关产品推荐

