python - 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]))
根据需要打印一个浮点数。我不确定为什么会这样。
解决方案
当你初始化时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)
代替。
推荐阅读
- db2 - DB2 查询多选并按日期求和
- python - pandas 计算组的列值均值和整个数据帧的均值
- python - Pandas Dataframe 一次将一行追加到 CSV
- javascript - FadeIN FadeOUT 页面转换 javascript bug
- php - PHP:避免在写入文件时为多行字符串自动添加换行符
- android - 如何使用 Gson 解析包含数组的 JSON 文件
- typo3 - 您如何调试/跟踪 Fluid 中的问题?
- excel - Excel VBA - 在所有工作表中搜索同一列,查找任何数据
- variables - 当条件满足时,我需要使用ansible替换模块替换jinja2模板中变量的内容
- python - 在 Flask 中将配置文件作为字典读取