VBA二维Double数组声明代码转Python实现求助
VBA转Python:3x3双精度数组实现
你的代码问题在于创建的是3行2列的数组,和VBA中Dim R_SH(1 To 3, 1 To 3) As Double定义的3x3双精度数组不符。
正确写法1:纯Python列表推导式
要创建3行3列、初始值为0.0(对应VBA的Double类型)的数组,用下面的代码:
# 3行3列,每个元素为双精度浮点型的0.0 R_SH = [[0.0 for _ in range(3)] for _ in range(3)]
解释:外层range(3)控制行数,内层range(3)控制列数,0.0明确指定为浮点类型,和VBA的Double对应。
正确写法2:用NumPy(更贴近VBA数组体验)
如果你的程序涉及大量数值计算,推荐用NumPy,它的多维数组和VBA数组的行为更接近:
import numpy as np # 创建3x3的全0双精度数组 R_SH = np.zeros((3, 3), dtype=np.float64)
解释:np.zeros直接生成指定形状的全0数组,dtype=np.float64就是VBA里的Double类型,后续索引、运算都更高效。
你的代码错误点
你之前写的w, h = 2, 3,range(w)只会生成2个元素,导致每行只有2个值,不符合VBA中3列的要求——哪怕把w改成3能修正结构,也建议显式用0.0来对应Double类型。
内容的提问来源于stack exchange,提问作者bircastri
相关产品推荐
相关产品推荐

