繁体   English   中英

在向量归一化期间更改 numpy 数组值时 numpy 中的问题

[英]Issue in numpy when change numpy array value during vector normalization

假设我有一个 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创建一个新数组或声明adtype

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM