You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现列表元素两两相乘,可用于矩阵向量正交规范性验证

两两组合计算函数实现(含通用列表计算、矩阵正交判断两个场景)

1 通用列表两两相乘功能

需求为输入一维列表,输出所有不重复的靠前元素和靠后元素的乘积,示例输入list_eg = [1,2,3],预期输出[2,3,6]。

实现代码

from itertools import combinations

def pairwise_multiply(input_list):
    # combinations直接生成所有不重复的2元素组合,避免手动写双重循环
    return [a * b for a, b in combinations(input_list, 2)]

测试调用

print(pairwise_multiply([1,2,3]))
# 输出:[2, 3, 6],完全匹配预期

2 矩阵向量正交规范判断功能

你需要判断矩阵中向量是否正交规范,核心就是先计算所有向量的两两点积,正交要求不同向量点积为0,规范要求单向量自身模长为1。
注意:你提到的B[2]*B[3]属于索引越界,3个向量的有效索引范围为0~2,两两组合共3组点积:B[0]·B[1]、B[0]·B[2]、B[1]·B[2]

实现代码(适配numpy矩阵)

import numpy as np
from itertools import combinations

def check_orthonormal(matrix, check_column=False):
    # check_column为True时判断列向量,默认判断行向量
    vectors = matrix.T if check_column else matrix
    # 计算两两不同向量的点积
    pairwise_dot_result = [float(np.dot(vec1, vec2)) for vec1, vec2 in combinations(vectors, 2)]
    # 计算所有向量的模长,用于判断规范要求
    vector_norm_result = [float(np.linalg.norm(vec)) for vec in vectors]
    return pairwise_dot_result, vector_norm_result

测试你给出的示例矩阵

B = np.matrix([[1,1,2],[1,2,1],[2,1,1]])
dot_res, norm_res = check_orthonormal(B)
print(dot_res)
# 输出:[5.0, 5.0, 5.0],对应三个两两向量的点积结果
print(norm_res)
# 输出:[2.449489742783178, 2.449489742783178, 2.449489742783178],也就是√6≈2.45

从结果可以看出,你给出的B矩阵既不满足正交要求(点积不为0),也不满足规范要求(模长不为1)。

内容的提问来源于stack exchange,提问作者Stavros Mantzekis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:24:00