在python中生成日志刻度
我需要生成一个列表,其中包含10^a和10^b之间的对数刻度,a在python中生成日志刻度,python,numpy,matplotlib,numpy-ndarray,Python,Numpy,Matplotlib,Numpy Ndarray,我需要生成一个列表,其中包含10^a和10^b之间的对数刻度,a
# List containing 0.1, 0.2, 0.3, ..., 800, 900, 1000
x = np.arange(0.1, 1.0, 0.1).tolist() +
np.arange(1, 10, 1).tolist() +
np.arange(10, 100, 10).tolist() +
np.arange(100, 1000, 100).tolist()
有没有一种方法可以做到这一点 这可以通过- 另一个- 用
N
-
s = [10**i for i in range(-1,N)]
np.linspace(s[:-1],s[1:],9, endpoint=False, axis=1).ravel()
您还可以使用NumPy的两个阵列的乘积。这里.T
用于转置以获得所需的顺序
a = np.arange(1, 10)
# array([1, 2, 3, 4, 5, 6, 7, 8, 9])
b = np.logspace(-1, 2, 4)
# array([ 0.1, 1. , 10. , 100. ])
x = np.outer(a, b).T.flatten() # flatten is to create a 1-d array from 2-d array
# array([1.e-01, 2.e-01, 3.e-01, 4.e-01, 5.e-01, 6.e-01, 7.e-01, 8.e-01,
# 9.e-01, 1.e+00, 2.e+00, 3.e+00, 4.e+00, 5.e+00, 6.e+00, 7.e+00,
# 8.e+00, 9.e+00, 1.e+01, 2.e+01, 3.e+01, 4.e+01, 5.e+01, 6.e+01,
# 7.e+01, 8.e+01, 9.e+01, 1.e+02, 2.e+02, 3.e+02, 4.e+02, 5.e+02,
# 6.e+02, 7.e+02, 8.e+02, 9.e+02])
s = [10**i for i in range(-1,N)]
np.linspace(s[:-1],s[1:],9, endpoint=False, axis=1).ravel()
a = np.arange(1, 10)
# array([1, 2, 3, 4, 5, 6, 7, 8, 9])
b = np.logspace(-1, 2, 4)
# array([ 0.1, 1. , 10. , 100. ])
x = np.outer(a, b).T.flatten() # flatten is to create a 1-d array from 2-d array
# array([1.e-01, 2.e-01, 3.e-01, 4.e-01, 5.e-01, 6.e-01, 7.e-01, 8.e-01,
# 9.e-01, 1.e+00, 2.e+00, 3.e+00, 4.e+00, 5.e+00, 6.e+00, 7.e+00,
# 8.e+00, 9.e+00, 1.e+01, 2.e+01, 3.e+01, 4.e+01, 5.e+01, 6.e+01,
# 7.e+01, 8.e+01, 9.e+01, 1.e+02, 2.e+02, 3.e+02, 4.e+02, 5.e+02,
# 6.e+02, 7.e+02, 8.e+02, 9.e+02])