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

无循环生成满足指定条件的K×2 numpy二元矩阵所有组合方法

无循环生成指定结构的NumPy数组方案

实现逻辑

我们要生成的所有矩阵,本质是从K行中选2个不同的行,分别在第0列和第1列放1的所有不重复组合,总组合数为$C(K,2)=K*(K-1)/2$,刚好匹配输出数组最后一维的长度要求。全程用NumPy原生操作实现,无显式Python循环,大K值下性能拉满。

代码实现

import numpy as np

def generate_target_matrices(K):
    # 生成所有i<j的行索引对,对应所有合法组合
    row_i, row_j = np.triu_indices(K, k=1)
    sample_count = len(row_i)
    # 初始化全0数组,形状符合K×2×样本数的要求
    result = np.zeros((K, 2, sample_count), dtype=np.int8)
    # 批量给每个样本的对应位置赋值1
    result[row_i, 0, np.arange(sample_count)] = 1
    result[row_j, 1, np.arange(sample_count)] = 1
    return result

验证示例

以K=5为例测试,输出完全匹配你给出的样例:

test_arr = generate_target_matrices(5)
# 输出维度验证:(5, 2, 10),10=5*4/2符合要求
print(test_arr.shape)

# 查看第1个样本
print(test_arr[..., 0])
# 输出:
# [[1 0]
#  [0 1]
#  [0 0]
#  [0 0]
#  [0 0]]

# 查看第2个样本
print(test_arr[..., 1])
# 输出:
# [[1 0]
#  [0 0]
#  [0 1]
#  [0 0]
#  [0 0]]

性能说明

K=300时,总样本量为44850,数组总元素数不到2700万,用int8存储仅占用27MB左右内存,运行时间为毫秒级,完全满足大K值的效率要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:54:04