如何用列表推导式或NumPy函数生成10的幂次序列?
更Pythonic的序列生成方案
你要生成的是首项为0.001、公比为0.1的等比数列,以下几种方法都比原for循环更简洁,符合Python/numpy风格:
方法1:numpy专用等比数列函数(最推荐)
用numpy.geomspace直接生成等比数列,无需手动计算:
import numpy as np alphas = np.geomspace(0.001, 1e-12, num=10)
geomspace会自动根据起始值、结束值和元素个数,生成等比分布的数组,完全匹配你的需求。
方法2:numpy广播运算
利用numpy的数组广播特性,通过幂运算直接生成:
import numpy as np alphas = 0.001 * (0.1) ** np.arange(10)
np.arange(10)生成0到9的整数数组,计算0.1的对应幂次后,再与初始值0.001相乘,一步得到目标数组。
方法3:纯Python列表推导式转numpy数组
如果偏好纯Python写法,先通过列表推导式生成序列,再转为numpy数组:
import numpy as np alphas = np.array([0.001 * (0.1)**i for i in range(10)])
这种写法避免了手动循环赋值,更符合Python的简洁风格。
以上三种方法都能替代原for循环,生成完全一致的序列:[1.e-03 1.e-04 1.e-05 ... 1.e-12]
内容的提问来源于stack exchange,提问作者user3162539
相关产品推荐
相关产品推荐

