Учитывая следующий код:
import numpy as np
mat = np.arange(1,26).reshape(5,5)
Насколько я понял, следующие строки идентичны:
mat[:3][1:2]
mat[:3,1:2]
Но это не так. Почему?
Учитывая следующий код:
import numpy as np
mat = np.arange(1,26).reshape(5,5)
Насколько я понял, следующие строки идентичны:
mat[:3][1:2]
mat[:3,1:2]
Но это не так. Почему?
Если вы укажете только одно измерение в синтаксисе среза, будет срезано только одно измерение. В NumPy измерения при индексации обычно разделяются ","
.
Для двумерного массива вы можете заменить «строку» на «размерность 1» и «столбец» на «размерность 2». В вашем примере mat[:3]
нарезает первые 3 строки. Последующий индексатор [1:2]
нарезает первую из этих трех строк.
Во втором примере [:3, 1:2]
разрезает строки и столбцы одновременно.
Возможно, вам будет полезно взглянуть на формы ваших результатов:
mat[:3].shape # (3, 5)
mat[:3][1:2].shape # (1, 5)
mat[:3,1:2].shape # (3, 1)
Ваша матрица:
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]])
Первый mat[:3][1:2]
сначала возьмет mat[:3]
, а затем применит [1:2]
:
mat[:3]
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]])
# mat[:3][1:2] => array([[ 6, 7, 8, 9, 10]])
В то время как второй (mat[:3,1:2]
) гласит:
линии до 3
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]])
Столбцы с 1
по 2
array([[ 2],
[ 7],
[12]])
Вывод, основное отличие в том, что первый применяет [1:2]
после [:3]
Вот почему:
> mat
# output:
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]])
> mat[:3] # you are selecting the first 3 rows
#output:
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15]])
> mat[:3][1:2] # you are selecting the second row only
Output:
array([[ 6, 7, 8, 9, 10]])
> mat[:3,1:2] # you are selecting from the first 3 rows and the second column
Output:
array([[ 2],
[ 7],
[12]])
mat[x][y]
совпадает сmat[x, y]
, только еслиx
является скаляром, т. е. если он выбирает один элемент в первом измерении. - person hpaulj   schedule 14.06.2018