如何堆叠多维数组的所有排列组合并生成独立数组
实现方法
先补充导入itertools库,然后遍历全排列列表,对每个排列执行np.hstack堆叠,最后通过动态命名生成tt_0到tt_23这些独立变量:
import numpy as np import itertools # 生成原始数组 a = np.random.rand(63, 1, 4) b = np.random.rand(63, 1, 4) c = np.random.rand(63, 1, 4) d = np.random.rand(63, 1, 4) combined_array = [a, b, c, d] # 生成4个数组的全排列列表,共24个结果 permutated_list = list(itertools.permutations(combined_array)) # 遍历每个排列,堆叠后生成独立变量 for idx, perm in enumerate(permutated_list): # 对当前排列里的数组执行水平堆叠 stacked_arr = np.hstack(perm) # 动态创建tt_0到tt_23全局变量 globals()[f'tt_{idx}'] = stacked_arr
补充说明
itertools.permutations会生成4个元素的所有全排列,总数为4! = 24,刚好匹配需求的数组数量- 每个原始数组形状为
(63,1,4),经过np.hstack堆叠后,结果数组形状为(63,4,4)(第二维度从1合并为4) - 如果不想用全局变量(避免污染命名空间),可以改用字典存储,更安全:
stacked_arrays = {} for idx, perm in enumerate(permutated_list): stacked_arrays[f'tt_{idx}'] = np.hstack(perm) # 访问方式示例:stacked_arrays['tt_0']
内容的提问来源于stack exchange,提问作者Starlord22
相关产品推荐
相关产品推荐

