使用numpython矩阵交换列
这是我的Y矩阵,我试图交换列(使列[1,2,3,4,5]取代[5,4,3,2,1]) 但是,这改变了数字的准确性 这是我的使用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
> 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]])