首页 > 解决方案 > 在向量归一化期间更改 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数组将向量列表更改为单位向量的正确方法是什么?

非常感谢大家!

标签: pythonarraysnumpylinear-algebra

解决方案


因为numpy.array()需要你声明数组中包含的对象的数据类型。如果未声明,它将被确定为最小数据类型。在您的情况下,它将是一个int. 要解决您的问题,您可以使用dtype = float或声明一个新数组adtype

a = np.array([[1,2,3],[2,3,4]], dtype=np.float32)

推荐阅读