创建一系列带有 numpy 橙色的浮点数



>我正在尝试创建一个浮点数范围,但是,似乎在该范围中添加一个步骤会导致两个添加的步骤,有关如何在不创建整数列表然后除以 10 的情况下解决此问题的任何想法(我避免这样做,因为步长也可能是 0.3(

import numpy as np
amp_start = 0.8
amp_step = 0.1
amp_end = 1.0
amp_end = (np.ceil(amp_end / amp_step)) * amp_step
amp_end_2 = (np.ceil(amp_end / amp_step)) * amp_step + amp_step
print(amp_end)
field_amp_range = np.arange(amp_start, amp_end, amp_step)
field_amp_range_2 = np.arange(amp_start, amp_end_2, amp_step)
field_amp_range = field_amp_range.tolist()
print(amp_end, amp_end_2, field_amp_range, field_amp_range_2)

编辑:缺少amp_start = 0.8(或= 0.0(

虽然我无法在计算机上重现它,但这听起来像是一个浮点舍入错误问题。np.arange文档:

使用非整数步长(如 0.1(时,结果通常不会 保持一致。对于这些情况,最好使用 linspace。

因此,使用linspace可能是最好的。下面是一个使用 linspace 的示例:

import numpy as np
amp_start = 0.8
amp_step = 0.1
amp_end = 1.0
amp_end = (np.ceil(amp_end / amp_step)) * amp_step
amp_end_2 = (np.ceil(amp_end / amp_step)) * amp_step + amp_step
print(amp_end)
field_amp_range = np.linspace(amp_start, amp_end, np.rint((amp_end-amp_start)/amp_step).astype('int')+1)
field_amp_range_2 = np.linspace(amp_start, amp_end_2, np.rint((amp_end_2-amp_start)/amp_step).astype('int')+1)
field_amp_range = field_amp_range.tolist()
print(amp_end, amp_end_2, field_amp_range, field_amp_range_2)

或者,如果您 真的想继续使用np.arange,并且您确定开始值和结束值之间存在整数步数,您可以在结束值中添加一个小数字,这样舍入无关紧要(如果您不希望结束值包含在列表中,请减去它(。在这种情况下,您的代码将变为:

import numpy as np
amp_start = 0.
amp_step = 0.1
amp_end = 1.0
amp_end = (np.ceil(amp_end / amp_step)) * amp_step
amp_end_2 = (np.ceil(amp_end / amp_step)) * amp_step + amp_step
print(amp_end)
field_amp_range = np.arange(amp_start, amp_end+amp_step/100, amp_step)
field_amp_range_2 = np.arange(amp_start, amp_end_2+amp_step/100, amp_step)
print(amp_end, amp_end_2, field_amp_range, field_amp_range_2)

最新更新