arrays - 我将一个 numpy 矩阵列乘以一个浮点数并得到一个奇怪的舍入。这是什么原因造成的?
问题描述
我试图通过将矩阵乘以浮点数来更新矩阵的列。请参阅下面的代码。
H = np.array([[1, 2, 3], [4, 5, 6]])
print(H[:, 0] * 0.1)
H[:, 0] = H[:, 0] * 0.1
print(H[:, 0])
这给出了输出:
[0.1 0.4]
[0 0]
Numpy 似乎将浮点数舍入0.1
到0
,但仅在将值分配给列时。这里发生了什么?
解决方案
H
有 dtype np.int_
。因此,当您相乘时H[:, 0] * 0.1
,输出会正确计算并存储在类型数组中np.float_
。当您将该浮点数组分配回 时H
,它会使用 trucation 转换为整数,因此为零。
您可以执行以下任何操作来初始化H
为浮点类型:
H = np.array([[1.0, 2, 3], [4, 5, 6]])
H = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float_)
推荐阅读
- html - 悬停区域 - 底部边框
- android - 关闭对话框片段后保留值
- r - 无法在 R 上安装任何软件包
- prometheus - and operator on two metrics with one same label - promql
- python - 无法导入 dash_core_components
- python - 有没有办法可以去掉任何低于 6 分的值(Python)
- ruby-on-rails - 如何在不加载关联模型的情况下检查 has_one 是否存在
- python - 创建一个 tkinter 食堂菜单,没有全局语句
- c - GtkTreeView 钩子交互搜索对话框
- reactjs - OnScroll 事件触发而不滚动 - Reactjs