是否有更Pythonic的方法来创建具有线性细分的对数刻度?
def log_linsub(start, end):
'Creates a log scale from 10**start to 10**end with linear subdivisions.'
base = np.array(range(1, 10))
seq = [base*10**val for val in range(start, end)]
seq = list(np.array(seq).flatten())
seq.append(10**end)
return np.array(seq)
def log_linsub(start, end):
"Creates a log scale from 10**start to 10**end with linear subdivisions."
return np.unique(
[
base * 10**val
for val in range(start, end)
for base in range(1, 11)
]
)
解释一些重构:
range(1, 10)
和 range(start, end)
进行了迭代,因此可以将其更改为列表理解,使其更加清晰和Pythonic;start=1, end=3
处有 100 和 1000 个值,但您可以使用 np.unique (如果需要 np.array)或 set(...)