Python numpy中的怪癖-在使用反射器的QR分解中,所有规范化元素都被指定为0

Python numpy中的怪癖-在使用反射器的QR分解中,所有规范化元素都被指定为0,python,numpy,linear-algebra,numerical-methods,qr-decomposition,Python,Numpy,Linear Algebra,Numerical Methods,Qr Decomposition,数组中的所有规范化元素都设置为0 我正在尝试为阵列创建反射器。在Python中,当我通过第一个元素(x[1://=x[0],x[0]=1)对数组中的所有元素进行规范化时,我在第一个元素中得到了所有的零和1 import numpy as np #project x via householder u = np.array([9,4,1,3,1]) x = np.array([3,4,1,3,1]) for i in range(1,len(u)): u[i] /= u[0] u[0] =

数组中的所有规范化元素都设置为0

我正在尝试为阵列创建反射器。在Python中,当我通过第一个元素
(x[1://=x[0],x[0]=1)
对数组中的所有元素进行规范化时,我在第一个元素中得到了所有的零和1

import numpy as np
#project x via householder
u = np.array([9,4,1,3,1])
x = np.array([3,4,1,3,1])

for i in range(1,len(u)):
  u[i] /= u[0]
u[0] = 1

结果应该是这样的
(u=[1,4/9,1/9,3/9,1/9])

当我们定义一个numpy数组时,我们可以通过在np.array中指定dtype来定义它的类型

import numpy as np
#project x via householder
u = np.array([9,4,1,3,1], dtype = np.float64)

for i in range(1,len(u)):
  u[i] /= u[0]
u[0] = 1
print(u)
给我们

[1.         0.44444444 0.11111111 0.33333333 0.11111111]

使用浮点数组或使用python 3。或者使用来自未来导入部门的
。所以整数的除法不会导致整数除法。谢谢当你在Matlab课程中使用Python的时候,这是一个需要考虑的问题。