python - 在向量归一化期间更改 numpy 数组值时出现 numpy 问题
问题描述
说我有一个 numpy 数组
a = np.array([[1,2,3],[2,3,4]])
我想把这两个向量变成单位向量。工作代码是
for i in range(2):
a[i] = a[i]/np.linalg.norm(a[i])
最后,结果a变成:
一个=
array([[0, 0, 0],
[0, 0, 0]])
而如果我运行计算并打印出类似的结果
for i in range(2):
print(a[i],i,np.linalg.norm(a[i]))
该代码将打印出正确的结果作为单位向量。
因此我的问题是: 1. 如果我将 numpy 数组分配给单位向量结果,为什么它会变为零。2.通过numpy数组将向量列表更改为单位向量的正确方法是什么?
非常感谢大家!
解决方案
因为numpy.array()
需要你声明数组中包含的对象的数据类型。如果未声明,它将被确定为最小数据类型。在您的情况下,它将是一个int
. 要解决您的问题,您可以使用dtype = float
或声明一个新数组a
。dtype
a = np.array([[1,2,3],[2,3,4]], dtype=np.float32)
推荐阅读
- excel - VBA Excel在另一个Excel文档中查找数字并复制特定列
- r - 安装 igraph 时未找到 sed 和 expr 且退出状态非零
- javascript - 从 React 中的对象数组中渲染一个对象
- javascript - Vuejs 事件处理程序中是否需要 $event?
- python - 使用 reticulate 包从 Python peakutils 包调用函数时出现类型错误
- css - 在 CSS GRID 布局内创建响应式行和列
- c# - 如何启动 UWP 模拟器?
- reactjs - 这两种使用打字稿创建功能组件的方法有什么区别?
- node.js - 如何从 newman 获取 JSON 响应
- git - 清理 Git 中的分支历史记录