【问题标题】:Result of function linspace函数 linspace 的结果
【发布时间】:2019-09-29 11:01:17
【问题描述】:

你能解释一下这个结果吗?我期望值为[0, 0.1, 0.4, 0.9, ...]

>>> np.linspace(0, 1, 10) ** 2
array([0.        , 0.01234568, 0.04938272, 0.11111111, 0.19753086,
       0.30864198, 0.44444444, 0.60493827, 0.79012346, 1.        ])

【问题讨论】:

    标签: python python-2.7 numpy


    【解决方案1】:

    np.linspace(0, 1, 10) 给出十个值包括两个端点

    >>> np.linspace(0, 1, 10)
    array([0.        , 0.11111111, 0.22222222, 0.33333333, 0.44444444,
           0.55555556, 0.66666667, 0.77777778, 0.88888889, 1.      ])
    

    当您对这些值求平方时,您会得到您所看到的数字。这被称为“栅栏柱问题”; 10 个帖子只给你 9 个面板:

    1 2 3 4 5 6 7 8 9 10
    |-|-|-|-|-|-|-|-|-|
     1 2 3 4 5 6 7 8 9
    

    所以每一步实际上是 1/9,而不是 1/10。我想你想要:

    >>> np.linspace(0, 1, 11) ** 2
    array([0.  , 0.01, 0.04, 0.09, 0.16, 0.25, 0.36, 0.49, 0.64, 0.81, 1.  ])
    

    或者,如果您不想在末尾添加1.,您可以根据the docs 明确排除端点:

    >>> np.linspace(0, 1, 10, endpoint=False) ** 2
    array([0.  , 0.01, 0.04, 0.09, 0.16, 0.25, 0.36, 0.49, 0.64, 0.81])
    

    【讨论】:

      猜你喜欢
      • 2022-11-03
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 2014-06-19
      • 2015-08-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多