我正在研究以下脚本,它被设想为稍后插入一个while循环,其中我有一个总“x”计数器(tot_x),不得超过允许的最大“x”(max_x)值。 tot_x意味着在每次迭代时通过向其添加numpy数组的大小来更新,其中“a”是示例。如果“a”的大小使得tot_x超过阈值,我想创建一个更短版本的数组“a”,称为“b”,它完全符合max_x和tot_x之间的剩余差距。这是代码:
import numpy as np
tot_x = 200
max_x = 300
a = np.arange(1030,1200)
tot_x = tot_x + a.size
if tot_x > max_x:
b = a[:-(a.size-(max_x-tot_x))]
tot_x = (tot_x-a.size) + b.size
问题在于,如果我按原样运行代码,则“b”数组未正确创建,即它的维度为0,而如果我删除了tot_x和if语句的更新,则“ b“数组完全按照我的意愿创建。以下是“b”数组的代码示例:
import numpy as np
tot_time = 200
max_time = 300
a = np.arange(1030,1200)
b = a[:-(a.size-(max_time-tot_time))]
tot_time = (tot_time-a.size) + b.size
问题出在哪里? 非常感谢
答案 0 :(得分:0)
两者之间的主要区别在于if语句,它是tot_x / tot_time的值。您在第一个中重新分配tot_x
到tot_x + a
的值,但不是第二个。因此,即使if语句中的代码被命中,它也会计算为b = a[:-240]
,这正确地评估为空数组。
我认为您可以通过将b = a[:-(a.size-(max_x-tot_x))]
替换为b = a[:-(a.size-(tot_x-max_x))]
来完成您所追求的目标。希望有所帮助!