接下来的变量是List、float和numpy数组
dt=list(range(1,12))
c=18
limit=2.75
Energy=np.zeros(len(dt))
我想在Numpy数组Energy
中赋值c=18
。然而,有一个条件。Energy
向量中的值不能大于limit=2.75
,因此c=18
大于limit=2.75
,应将其切割为2.5
,并分配到循环的实际索引位置和向量Energy
的下一个索引位置,直到达到值18
。我编写了这段代码,但它并没有真正有效地工作
for i in range(0,1):
if c>limit:
tmp2=c-(limit)
if tmp2>(limit):
tmp3=tmp2-(limit)
if tmp3>limit:
tmp4=tmp3-(limit)
if tmp4>(limit):
tmp5=tmp4-(limit)
if tmp5>(limit):
tmp6=tmp5-(limit)
if tmp6>limit:
tmp7=tmp6-(limit)
if tmp7>(limit):
tmp8=tmp7-(limit)
else:
Energy[i]=limit
Energy[i+1]=limit
Energy[i+2]=limit
Energy[i+3]=limit
Energy[i+4]=limit
Energy[i+5]=limit
Energy[i+6]=tmp7
你有办法让它变得更好吗?谢谢大家!
欢迎来到stackoverflow
您的代码目前使用一个不需要循环的循环,也不使用可以使用的循环
进入您的代码:
如果我们将此更改为:
我们将得到结果0-它只运行一次,因此不需要循环它-您的代码中没有提到我,因此不需要循环它
您可以使用循环将c分配给数组,但这不是必需的,我将留给您自己作为练习
它可以用一种不同的、更有效的方式来实现
首先,当您分配变量时,请尝试使它们具有描述性和可读性-您将花费比阅读更多的时间返回代码
我不知道您描述的是什么系统,所以我只给出了通用名称:
将numpy作为np导入
现在我们真正要问的是两件事,赋值除以极限(整数)的次数是多少,余数是多少
Python对此楼层划分(//)和模数有两个操作,它们给出:
所以我们知道数组的第一个元素(value-to-be-assigned//limit-elements-1)需要等于limit,最后一个元素需要等于value-to-be-assigned%limit
最后,Python提供了一种访问列表元素的简单方法—我们可以将前x个元素设置为等于以下值:
x只需要是一个整数
综合起来,我们得到:
我们可以跟你核实一下
相关问题 更多 >
编程相关推荐