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

Python生成Excel单元格(A1至ZZ1500000)矩阵映射的高效方案求助

问题描述

需要生成从A1到ZZ1500000的Excel单元格坐标矩阵,尝试用numpy的matmul方法实现时因字符类型不支持矩阵乘法报错,只能用Python嵌套循环生成,速度极慢,求更高效的实现方案。

现有代码

import numpy as np
import string

row_nums = np.arange(1,200000,1)
row_nums = list(map(str, row_nums))
col_nums = []
set_char_l = []
alphabets = list(string.ascii_uppercase)
#set_char = 'A'
for i in range(1, 703, 26):
    if i <= 26:
        for item in alphabets:
            col_nums.append(item)
    elif (i // 26) < 27:
        set_char = round(i // 26) - 1
        new_char = alphabets[set_char]
        set_char_l.append(new_char)
        for item in alphabets:
            col_nums.append(new_char + item)

cell_nums = []
for col in col_nums:
    for row in row_nums:
        cell_no = col + row
        cell_nums.append(cell_no)
cell_nums = np.array(cell_nums)
cell_nums = cell_nums.reshape(len(row_nums), len(col_nums))

尝试用matmul的代码:

cell_nums = np.matmul(row_nums.reshape(-1,1), col_nums)

报错信息

UFuncTypeError: ufunc 'matmul' did not contain a loop with signature matching types (dtype('<U6'), dtype('<U2')) -> None

解决方案

1. 高效生成列名(A-Z、AA-ZZ)

利用numpy的向量化操作生成列名,替代循环拼接:

import numpy as np
import string

alphabets = np.array(list(string.ascii_uppercase))
# 生成单字母列名
single_cols = alphabets
# 生成双字母列名:通过笛卡尔积拼接所有AA-ZZ组合
double_cols = np.char.add(alphabets[:, None], alphabets).ravel()
# 合并单、双字母列名
col_nums = np.concatenate([single_cols, double_cols])

2. 利用广播机制生成最终矩阵

numpy的广播可以自动扩展数组维度,直接完成字符串拼接,完全避免嵌套循环:

# 生成1到1500000的行号并转为字符串数组
row_nums = np.arange(1, 1500001).astype(str)
# 广播拼接:row_nums[:, None] 转为(N,1)维度,与(M,)维度的col_nums广播为(N,M)的二维数组
cell_matrix = np.char.add(col_nums, row_nums[:, None])

优势说明

  • 所有操作基于numpy底层C实现的向量化逻辑,比Python循环快数十倍甚至上百倍
  • 代码简洁直观,无需手动处理维度转换和循环嵌套
  • 直接生成目标二维数组,省去了先创建一维列表再reshape的额外步骤

验证:cell_matrix[0,0] 为'A1',cell_matrix[-1,-1] 为'ZZ1500000',完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:07:21