如何用Pythonic方式生成几何级数分布的单元格边界数组?
更简洁的Pythonic实现方式
原代码通过循环累加生成几何级数分布的单元格边界数组,我们可以利用Python内置工具或numpy的向量化操作简化代码,同时保持逻辑完全一致:
1. 贴合原numpy环境的向量化写法
用numpy的cumsum(累加)和arange生成序列,替代手动循环:
import numpy as np n_cells = 10 c = 0.9 thick = 2 x0 = thick * (c - 1) / (c**n_cells - 1) # 生成指数项序列并累加,开头补0得到完整边界数组 x = np.concatenate([[0], np.cumsum(x0 * c ** np.arange(n_cells))])
2. 纯Python无依赖写法
借助itertools.accumulate直接处理累加逻辑,代码更紧凑:
from itertools import accumulate n_cells = 10 c = 0.9 thick = 2 x0 = thick * (c - 1) / (c**n_cells - 1) # 生成每一项的序列并累加,拼接初始的0得到结果 x = [0.0] + list(accumulate(x0 * (c ** i) for i in range(n_cells)))
两种写法的核心逻辑和原代码一致:先计算首项x0,再对x0*c^i的序列做累加,最终得到从0到thick的单元格边界数组。
内容的提问来源于stack exchange,提问作者bibi
相关产品推荐
相关产品推荐

