Индексирование строк, столбцов, элементов numpy.matrix - PullRequest
0 голосов
/ 07 ноября 2019

Я не понимаю правила доступа к элементам, строкам и столбцам в numpy.matrix. Вот пример:

import numpy as np
m = np.matrix( [ [ 0, 1, 2 ] ] )
print( "m:", m )
print( "m[0]:", m[ 0 ] )
print( "m[0,]", m[ 0, ] )
print( "m[0,:]", m[ 0, : ] )
print( "m[0,i]", m[ 0, 0 ], m[ 0 , 1 ], m[ 0, 2 ] )

и вот что он печатает:

m: [[0 1 2]]
m[0]: [[0 1 2]]
m[0,] [[0 1 2]]
m[0,:] [[0 1 2]]
m[0,i] 0 1 2

Кажется, что numpy.matrix работает иначе, чем numpy.array или списки Python 2D. Может кто-то указать на краткое объяснение того, как индексирование работает для numpy.matrix? И есть ли более краткий способ, чем последняя строка кода, для извлечения всех элементов (1, n) numpy.matrix, как если бы это был одномерный контейнер?

1 Ответ

1 голос
/ 07 ноября 2019

Матрица всегда 2d. Индексирование строк (что делает большинство ваших примеров) по-прежнему возвращает 2d массив.

In [1]: m = np.matrix([[ 0,1,2]])                                               
In [2]: m                                                                       
Out[2]: matrix([[0, 1, 2]])
In [3]: m[0]                                                                    
Out[3]: matrix([[0, 1, 2]])      # note the 'matrix' display

, индексирующий элемент:

In [4]: m[0,1]                                                                  
Out[4]: 1

матрица как обычный массив:

In [6]: m.A                                                                     
Out[6]: array([[0, 1, 2]])      # still 2d

как список:

In [7]: m.tolist()                                                              
Out[7]: [[0, 1, 2]]

m как массив 1d:

In [8]: m.A1                                                                    
Out[8]: array([0, 1, 2])           # in effect m.A.ravel()

Вам не нужно использовать np.matrix, особенно если это сбивает с толку. Это в процессе устаревания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...