阵列的差分步长

时间:2016-07-29 13:57:49

标签: arrays numpy grid

我在python中工作。我有一个角度数量,我希望为数组改变步长,而不是像np.linspace(0, pi, 100)那样创建100个相等步长的均匀网格。相反,我想要更多的解决方案' (即较小的步长)对于接近0和pi的值,较大的步长接近pi / 2弧度。是否有一种简单的方法可以使用numpy中提供的技术在python中实现它?

1 个答案:

答案 0 :(得分:1)

以下是如何使用np.r_构建一个末端间距更近,中间更宽的数组:

In [578]: x=np.r_[0:.09:10j, .1:.9:11j, .91:1:10j]
In [579]: x
Out[579]: 
array([ 0.  ,  0.01,  0.02,  0.03,  0.04,  0.05,  0.06,  0.07,  0.08,
        0.09,  0.1 ,  0.18,  0.26,  0.34,  0.42,  0.5 ,  0.58,  0.66,
        0.74,  0.82,  0.9 ,  0.91,  0.92,  0.93,  0.94,  0.95,  0.96,
        0.97,  0.98,  0.99,  1.  ])

然后使用x缩放np.pi

这是为np.r_创建的那种东西。并不是说它做了什么特别的事情。它的作用如下:

np.concatenate([np.linspace(0,.09,10),
                np.linspace(.1,.9,11),
                np.linspace(.91,1,10)])

为了使间距更平滑,我会尝试用曲线映射单个linspace

In [606]: x=np.arctan(np.linspace(-10,10,10))
In [607]: x -= x[0]
In [608]: x /= x[-1]
In [609]: x
Out[609]: 
array([ 0.        ,  0.00958491,  0.02665448,  0.06518406,  0.21519086,
        0.78480914,  0.93481594,  0.97334552,  0.99041509,  1.        ])