Python 创建以0.1个间隔递增的重复元素数组

Python 创建以0.1个间隔递增的重复元素数组,python,arrays,python-2.7,numpy,scipy,Python,Arrays,Python 2.7,Numpy,Scipy,我希望我的代码能够创建一个元素数组: [13.8,13.9,14.,…]增加了0.1,但在继续下一个数字之前,每个元素应该重复17次。下面是我的代码 from numpy import* from pylab import* def f(elem): return repeat((elem + 0.1),17) print f(13.8) def lst(init): yield init while True: next = f(init) yield

我希望我的代码能够创建一个元素数组: [13.8,13.9,14.,…]增加了0.1,但在继续下一个数字之前,每个元素应该重复17次。下面是我的代码

from numpy import*
from pylab import*
def f(elem):
return repeat((elem + 0.1),17)
print f(13.8)

def lst(init):
   yield init
   while True:
       next = f(init)
       yield next
       init = next

for i in lst(13.8):
    print i
    if i > 20:
        break
代码输出仅显示一个重复17次的数组13.9,但随后显示错误:

Traceback (most recent call last):
  File "repeatelementsarray.py", line 19
    if i > 20:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

看起来程序试图创建多个数字数组,我只想要一个数组。另外,由于lst是一个生成器,它不应该给出一个数组,因此使用fromiter?

可以使用的组合来获得线性递增序列,并重复每个元素:

import numpy as np

elems = np.arange(0, 1, 0.1)
reps = np.repeat(elems, 3)

print(reps)
# [ 0.   0.   0.   0.1  0.1  0.1  0.2  0.2  0.2  0.3  0.3  0.3  0.4  0.4  0.4
#   0.5  0.5  0.5  0.6  0.6  0.6  0.7  0.7  0.7  0.8  0.8  0.8  0.9  0.9  0.9]

可以使用的组合来获得线性递增序列,并重复每个元素:

import numpy as np

elems = np.arange(0, 1, 0.1)
reps = np.repeat(elems, 3)

print(reps)
# [ 0.   0.   0.   0.1  0.1  0.1  0.2  0.2  0.2  0.3  0.3  0.3  0.4  0.4  0.4
#   0.5  0.5  0.5  0.6  0.6  0.6  0.7  0.7  0.7  0.8  0.8  0.8  0.9  0.9  0.9]

基于xrange,您可以生成如下函数:

def重复_范围(启动、停止、步骤=0.1、重复=5):
r=开始
当r

这将产生您想要的功能。

基于xrange,您可以产生如下功能:

def重复_范围(启动、停止、步骤=0.1、重复=5):
r=开始
当r

这就产生了你想要的东西。

你想在这里完成什么?你想在这里完成什么?我建议使用
np.linspace
而不是
np.arange
。由于浮点的不精确性,
np.arange
给出意外数量的元素并不罕见。@WarrenWeckesser
np.arange
似乎是更自然的选择,因为OP指定了间隔而不是步数。不知道你说的“意外的元素数”是什么意思?我同意!但是给
arange
一个浮点增量容易出现一个问题。例如,我对
arange(13.5,13.9,0.1)
arange(13.5,14.0,0.1)
得到了相同的答案。啊,我明白你的意思了。值得一提的是,如果没有更多关于OP实际试图做什么的信息,我会在这里犹豫推荐
np.linspace
。好吧,之前被烧毁过,如果增量不是整数,我会犹豫推荐
arange
over
linspace
。无论如何,你已经得到我的支持票了。:-)我建议使用
np.linspace
而不是
np.arange
。由于浮点的不精确性,
np.arange
给出意外数量的元素并不罕见。@WarrenWeckesser
np.arange
似乎是更自然的选择,因为OP指定了间隔而不是步数。不知道你说的“意外的元素数”是什么意思?我同意!但是给arange一个浮点增量容易出现一个问题。例如,我对
arange(13.5,13.9,0.1)
arange(13.5,14.0,0.1)
得到了相同的答案。啊,我明白你的意思了。值得一提的是,如果没有更多关于OP实际试图做什么的信息,我会在这里犹豫推荐
np.linspace
。好吧,之前被烧毁过,如果增量不是整数,我会犹豫推荐
arange
over
linspace
。无论如何,你已经得到我的支持票了。:-)