如何在特定范围内以0.01的步长生成1825个数字

时间:2018-07-27 04:39:14

标签: python-3.x numpy

在下面的代码中,我要获取len(a)应为1825,并保持步骤0.01。但是,当我打印len(a)时,它会给我73。要获得1825的长度,我必须生成2.275至3的数字,步长为0.01,73倍。我怎样才能做到这一点?我尝试使用np.linspace,但该命令在这种情况下不起作用。

a = np.arange(2.275, 3, 0.01)

2 个答案:

答案 0 :(得分:2)

好像您想np.random.choice 1825次

>>> a = np.arange(2.275,3,0.01)
>>> c = np.random.choice(a, 1825)

array([2.995, 2.545, 2.755, ..., 2.875, 2.275, 2.605])

>>> c.shape
(1825,)

编辑

如果您希望a依次重复25次(即1825/73),请使用np.tile()

target = 1825
n = target/len(a)

np.tile(a, int(n))

收益

array([2.275, 2.285, 2.295, ..., 2.975, 2.985, 2.995])

答案 1 :(得分:0)

给定a = np.arange(2.275, 3, 0.01)n = 1825,这是一个班轮:

a = np.broadcast_to(a, (n // a.size + book(n % a.size), a.size)).ravel()[:n]

这使用np.broadcast_toa转换成矩阵,并在其中重复自身足够的次数以填充1825个元素。 ravel然后将重复的列表弄平,最后的切片将不需要的元素切掉。 ravel操作实际上是复制列表的方法,因为广播使用大步诀窍来避免复制数据。