Python 创建以0.1个间隔递增的重复元素数组
我希望我的代码能够创建一个元素数组: [13.8,13.9,14.,…]增加了0.1,但在继续下一个数字之前,每个元素应该重复17次。下面是我的代码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
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
给出意外数量的元素并不罕见。@WarrenWeckessernp.arange
似乎是更自然的选择,因为OP指定了间隔而不是步数。不知道你说的“意外的元素数”是什么意思?我同意!但是给arange一个浮点增量容易出现一个问题。例如,我对arange(13.5,13.9,0.1)
和arange(13.5,14.0,0.1)
得到了相同的答案。啊,我明白你的意思了。值得一提的是,如果没有更多关于OP实际试图做什么的信息,我会在这里犹豫推荐np.linspace
。好吧,之前被烧毁过,如果增量不是整数,我会犹豫推荐arange
overlinspace
。无论如何,你已经得到我的支持票了。:-)我建议使用np.linspace
而不是np.arange
。由于浮点的不精确性,np.arange
给出意外数量的元素并不罕见。@WarrenWeckessernp.arange
似乎是更自然的选择,因为OP指定了间隔而不是步数。不知道你说的“意外的元素数”是什么意思?我同意!但是给arange一个浮点增量容易出现一个问题。例如,我对arange(13.5,13.9,0.1)
和arange(13.5,14.0,0.1)
得到了相同的答案。啊,我明白你的意思了。值得一提的是,如果没有更多关于OP实际试图做什么的信息,我会在这里犹豫推荐np.linspace
。好吧,之前被烧毁过,如果增量不是整数,我会犹豫推荐arange
overlinspace
。无论如何,你已经得到我的支持票了。:-)