关于np.linspace(0,1,10)**2运算结果的疑问及解释请求
解释
np.linspace(0, 1, 10) ** 2的运算结果 嘿,我来帮你理清这个问题~你预期的结果和实际输出不一样,核心原因是你对np.linspace的输出逻辑理解错啦!
先给你拆解一下:
np.linspace(start, stop, num)的作用是生成从start到stop(包含两端)的num个均匀间隔数值。这里你传的参数是(0,1,10),意味着要把0到1这个区间分成9等份(因为10个点有9个间隔),每个间隔是(1-0)/(10-1) = 1/9 ≈ 0.1111。- 所以
np.linspace(0,1,10)生成的原始序列是:0, 1/9, 2/9, 3/9, ..., 9/9,也就是[0., 0.11111111, 0.22222222, 0.33333333, 0.44444444, 0.55555556, 0.66666667, 0.77777778, 0.88888889, 1.]。 - 对这个序列做平方运算
**2,自然就得到了你看到的结果:每个元素是对应原始值的平方,比如(1/9)² ≈0.01234568,(2/9)²≈0.04938272,以此类推。
如果想要得到你预期的类似逻辑结果(我猜你可能是想基于间隔0.1的序列做平方),应该用间隔为0.1的序列来计算,比如用np.arange:
np.arange(0, 1.1, 0.1) ** 2
这个代码会生成0, 0.1, 0.2, ..., 1.0的序列,平方后得到array([0. , 0.01, 0.04, 0.09, 0.16, 0.25, 0.36, 0.49, 0.64, 0.81, 1. ]),和你预期的逻辑一致。
内容的提问来源于stack exchange,提问作者Arrara
相关产品推荐
相关产品推荐

