这是我要交换列的Y矩阵(以使列[1,2,3,4,5]代替[5,4,3,2,1]) 但是,这改变了数字的准确性
这是Y
> 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.]])
如何使它具有相同的精度?
答案 0 :(得分:0)
不要在这里循环,只需使用np.flip
x = np.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]])
np.flip(x, axis=1)
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, 0.0e+00, 1.0e+00, -1.0e-02, 1.0e-02]])
如果您有不同的顺序,例如: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]])