Замена столбцов в Python - PullRequest
0 голосов
/ 29 июня 2018

Это моя матрица 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.]])

Как я могу сделать так, чтобы он имел такую ​​же точность?

1 Ответ

0 голосов
/ 29 июня 2018

Не зацикливайтесь, просто используйте 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]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...