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