[英]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
创建一个新数组或声明a
的dtype
。
a = np.array([[1,2,3],[2,3,4]], dtype=np.float32)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.