首页 > 解决方案 > numpy.random.uniform 应用于数组索引产生整数

问题描述

我想用统一选择的浮点数填充一个数组,但是当我尝试这样做时,我得到的是整数:

#Initial parameters
P = np.full(1, 0)
lower_bounds = np.full(1, 0)
upper_bounds = np.full(1, np.pi)

def candidate(P):
    for k in range(len(P)):
        P[k] = np.random.uniform(lower_bounds[k],upper_bounds[k])
    return P

print(candidate(P))

这将打印 [0]、[1]、[2] 或 [3],而

print(np.random.uniform(lower_bounds[0],upper_bounds[0]))

根据需要打印一个浮点数。我不确定为什么会这样。

标签: pythonarraysnumpyrandom

解决方案


当你初始化时P就变成了一个整数数组。

P = np.full(1, 0)
print(P.dtype)  # prints dtype('int64')

稍后您将结果分配给np.random.uniform返回P[k]的浮点值时np.random.uniform被截断,您只得到整数部分。

使用P = np.full(1,0.0)P = np.full(1,0, dtype=float)代替。


推荐阅读