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

如何将物理位置访问记录1D数组转换为访问计数2D numpy矩阵

实现方案

核心采用numpy原生向量化统计逻辑,无Python层循环,处理大规模数组时性能优异,且易扩展。

具体实现代码

import numpy as np

locations = [1,2,4,4,3,2,2,4,1,4]
# 统计各位置访问次数:bincount默认从0开始计数,切片[1:]后索引0/1/2/3分别对应位置1/2/3/4的访问量
counts = np.bincount(locations, minlength=5)[1:]
# 按行优先规则重塑为2x2数组,正好匹配要求的位置映射规则
result = counts.reshape(2, 2)

print(result)
# 输出:
# [[2 3]
#  [1 4]]

方案说明

  • 性能表现:np.bincount是numpy底层C实现的计数函数,时间复杂度O(n),处理百万级以上规模的位置数组时,运行效率比Python原生循环、字典统计等方案高1~2个数量级,内存开销也更低。
  • 扩展性:如果后续需要适配更大尺寸的网格(比如N×N规格,对应位置编号1到N²,按行优先顺序排布),仅需要将reshape(2,2)修改为reshape(N, N)即可,其余逻辑无需调整。
  • 适配特殊场景:如果位置编号存在不连续的情况,可以替换计数逻辑为np.unique(locations, return_counts=True)[1],再配合位置索引映射即可,同样保持高性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 06:06:47