繁体   English   中英

创建一个以0.1个间隔增加的重复元素数组

[英]Create an array of repeating elements that increase by 0.1 intervals

我要我的代码执行的操作是创建一个元素数组:[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

代码的输出仅显示一个数组13.9重复17次,但随后显示错误:

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吗?

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

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 repeated_range(start, stop, step=0.1, repeat=5):
    r = start
    while r < stop:
        for i in xrange(repeat):
            yield r
        r += step

这将产生您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM