求助:如何将列向量值的组合存储为numpy数组以进行极大似然估计
将itertools.combinations结果转换为Numpy数组(矩阵形式)
直接把itertools.combinations返回的迭代器转为列表,再传入numpy.array()就能得到矩阵形式的Numpy数组。结合你的场景,下面是完整的实现示例:
示例代码
import numpy as np import itertools # 模拟你的两个nx1列向量 val = np.array([[1], [2], [3], [4]]) # 4x1列向量 val1 = np.array([[5], [6], [7], [8]]) # 4x1列向量 # 水平堆叠为nx2矩阵(每行对应两个向量的一组元素) stacked_matrix = np.hstack((val, val1)) # 生成矩阵行的两两组合(和你参考的示例逻辑一致,从4行中取2行的组合) com_set = itertools.combinations(stacked_matrix, 2) # 转换为Numpy数组 result_matrix = np.array(list(com_set)) # 查看结果 print(result_matrix)
输出说明
当n=4时,组合数为C(4,2)=6,最终会得到一个6x2x2的数组:
[[[1 5] [2 6]] [[1 5] [3 7]] [[1 5] [4 8]] [[2 6] [3 7]] [[2 6] [4 8]] [[3 7] [4 8]]]
如果你的需求是两个向量元素的所有两两组合(而非行的组合),可以调整为从合并后的元素列表生成组合:
# 合并两个列向量的元素为一维数组 combined_elements = np.vstack((val, val1)).flatten() # 生成两两组合 com_set = itertools.combinations(combined_elements, 2) result_matrix = np.array(list(com_set)) # 结果为C(8,2)=28行2列的矩阵 print(result_matrix.shape) # (28, 2)
转换后的Numpy矩阵可以直接用于后续的极大似然估计计算,比如提取组合元素进行概率密度计算、参数估计等操作。
内容的提问来源于stack exchange,提问作者Giuseppe Degan Di Dieco
相关产品推荐
相关产品推荐

