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

Python新手问询:如何基于列表值创建指定位置为1的二进制矩阵

实现对称二进制矩阵的简便方法

嘿,很高兴能帮到你!作为Python和Stack Overflow的新手,这种生成对称二进制矩阵的需求其实有挺简洁的实现方式,我给你两种常用思路:

方法一:纯Python实现(无需额外库)

这种方法适合不想安装第三方库的场景,用基础的列表推导式和迭代工具就能搞定:

  1. 先创建一个指定大小的全0矩阵
  2. 生成客户列表中所有两两元素的无序组合
  3. 对每个组合,同时设置矩阵中对称的两个位置为1

代码示例:

import itertools

# 你的客户列表和矩阵大小
customer_list = [4, 5, 8]
matrix_size = 10

# 创建10×10的全0矩阵
binary_matrix = [[0] * matrix_size for _ in range(matrix_size)]

# 遍历所有两两元素的组合(避免重复处理对称对)
for i, j in itertools.combinations(customer_list, 2):
    binary_matrix[i][j] = 1
    binary_matrix[j][i] = 1

# 打印验证结果
for row in binary_matrix:
    print(row)

方法二:用NumPy实现(高效简洁)

如果需要处理更大的矩阵,NumPy会更高效,语法也更直观:

  1. 创建指定大小的全0整数数组
  2. 同样生成两两元素组合,批量设置对称位置的值

代码示例:

import numpy as np
import itertools

customer_list = [4, 5, 8]
matrix_size = 10

# 创建10×10的全0矩阵
binary_matrix = np.zeros((matrix_size, matrix_size), dtype=int)

# 生成所有两两组合并设置对称位置为1
for i, j in itertools.combinations(customer_list, 2):
    binary_matrix[i, j] = 1
    binary_matrix[j, i] = 1

# 打印结果
print(binary_matrix)

小提示

  • 如果你的客户列表里可能存在重复元素,可以先去重:customer_list = list(set(customer_list))
  • 用itertools.combinations而不是permutations的原因是:前者只生成一次无序对(比如(4,5)),我们手动设置对称位置即可,避免重复操作,更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:12:34