使用numpython矩阵交换列

使用numpython矩阵交换列,python,numpy,matrix,swap,floating-accuracy,Python,Numpy,Matrix,Swap,Floating Accuracy,这是我的Y矩阵,我试图交换列(使列[1,2,3,4,5]取代[5,4,3,2,1]) 但是,这改变了数字的准确性 这是我的 > array([[ 0.0e+00, 1.0e-15, 0.0e+00, 0.0e+00, 0.0e+00], > [ 1.0e+00, 0.0e+00, 0.0e+00, 0.0e+00, 0.0e+00], > [-1.0e-02, 1.2e-02, 0.0e+00, 0.0e+00, 0.0e+0

这是我的Y矩阵,我试图交换列(使列[1,2,3,4,5]取代[5,4,3,2,1]) 但是,这改变了数字的准确性

这是我的

> array([[ 0.0e+00,  1.0e-15,  0.0e+00,  0.0e+00,  0.0e+00],
>        [ 1.0e+00,  0.0e+00,  0.0e+00,  0.0e+00,  0.0e+00],
>        [-1.0e-02,  1.2e-02,  0.0e+00,  0.0e+00,  0.0e+00],
>        [ 1.0e-02, -1.0e-02,  1.0e+00,  0.0e+00,  0.0e+00]])
这就是代码

y1, y2= np.shape(Y)
 y2= y2-2
 for row in range (y1):
     for column in range (y2):
         Z[row, column]=Y[row, y2-column+1] 
这是Z

array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 1., 0., 0.]])

如何使其具有相同的精度?

不要在此处循环,只需使用

如果您有不同的顺序,例如:
4,3,5,2,1
,您可以使用高级索引:

x[:, [3, 2, 4, 1, 0]]

array([[ 0.0e+00,  0.0e+00,  0.0e+00,  1.0e-15,  0.0e+00],
   [ 0.0e+00,  0.0e+00,  0.0e+00,  0.0e+00,  1.0e+00],
   [ 0.0e+00,  0.0e+00,  0.0e+00,  1.2e-02, -1.0e-02],
   [ 0.0e+00,  1.0e+00,  0.0e+00, -1.0e-02,  1.0e-02]])

循环和使用y2=y2-2使一些列不在新矩阵中,因此,这些是不同的数字,精度也不不同。
x[:, [3, 2, 4, 1, 0]]

array([[ 0.0e+00,  0.0e+00,  0.0e+00,  1.0e-15,  0.0e+00],
   [ 0.0e+00,  0.0e+00,  0.0e+00,  0.0e+00,  1.0e+00],
   [ 0.0e+00,  0.0e+00,  0.0e+00,  1.2e-02, -1.0e-02],
   [ 0.0e+00,  1.0e+00,  0.0e+00, -1.0e-02,  1.0e-02]])