基于Numpy数组的ID邮件发送权重矩阵构建需求
构建邮件发送权重矩阵的实现方法
给定记录发送ID与接收ID的Numpy数组,我们需要生成一个权重矩阵:矩阵的行和列覆盖所有唯一ID,对角线表示ID自身的计数(初始为1),其余位置对应发送ID到接收ID的邮件发送次数。
实现步骤
- 整理所有唯一ID,建立ID到矩阵索引的映射关系
- 初始化一个对角线元素为1的矩阵作为基础
- 遍历输入的邮件记录,累加对应发送-接收对的次数
代码示例
import numpy as np # 输入的邮件发送记录Numpy数组 data = np.array([[24, 131], [24, 18], [80, 89]]) # 按需求整理唯一ID的顺序(可根据实际场景调整排序规则) unique_ids = [24, 18, 80, 89, 131] # 创建ID到矩阵索引的映射字典 id_to_idx = {id_val: idx for idx, id_val in enumerate(unique_ids)} # 初始化权重矩阵,对角线元素设为1 matrix_dim = len(unique_ids) weight_matrix = np.eye(matrix_dim, dtype=int) # 遍历每条记录,更新权重矩阵 for sender, receiver in data: weight_matrix[id_to_idx[sender], id_to_idx[receiver]] += 1 # 按示例格式输出结果 print(" " + ", ".join(map(str, unique_ids))) for idx, id_val in enumerate(unique_ids): row_str = ", ".join(map(str, weight_matrix[idx])) print(f"{id_val}[{row_str}]")
运行结果
24, 18, 80, 89, 131 24[1, 1, 0, 0, 1] 18[0, 1, 0, 0, 0] 80[0, 0, 1, 1, 0] 89[0, 0, 0, 1, 0] 131[0, 0, 0, 0, 1]
内容的提问来源于stack exchange,提问作者ahaan abrar
相关产品推荐
相关产品推荐

