Или другими словами (процитировать documentation) базовый синтаксис слайс я: J: K, где я есть начальный индекс, J является индексом остановки, и к является шагом (к> 0)
Теперь, если «i» не задано, по умолчанию 0 для k> 0 и n - 1 для k < 0. Если j не задано, по умолчанию он равен n.
Thats for one dimension array. Теперь двухмерные массивы - это другой зверь. Синтаксис среза - это [rowrange, columnrange]
Итак, если вы хотите все строки, но только последние два столбца, как и в вашем случае, вы делаете a [0: 3,1: 3].
Здесь [0: 3] означает, что все строки от 0 до 3. и [1: 3] означает, что все столбцы из колонки 1 в колонке 3.
Теперь вы можете задаться вопросом, даже если у вас есть только 3 столбца и нумерация начинается с 1, поэтому технически эта команда должна возвращать 3 столбца вправо. i.e столбец 1, столбец2, столбец 3. Это сложная часть этого синтаксиса. Вы должны начать отсчет от ПОСЛЕ первого номера. Поэтому, когда вы говорите [1: 3], вы на самом деле говорите, что дайте мне столбец 2 и столбец 3. Каковы последние два столбца, которые вы хотите.
Теперь, если вы не знаете, как долго ваша матрица или вы хотите все строки, вы можете просто оставить эту часть пустой. i.e
a [:, 1: 3] также будет работать.
То же касается и столбцов. то есть, если вы хотите сказать, все столбцы, но только первый ряд, можно было бы написать
а [0: 1 ,:]
Теперь, как выше ответ [:, 1:] работает, потому что, когда вы говорите [1:] для столбцов, это означает дать мне что-нибудь ПОСЛЕ первого столбца и до конца всех столбцов. т.е. пустое означает «до конца».
К настоящему моменту вы должны понимать, что все, что находится по обе стороны от запятой, является подмножеством одномерного случая, о котором я упоминал выше. я.е, если вы хотите, чтобы указать ваши строки, используя размер шага вы можете написать а [:: 2,1]
Что в вашем случае будет возвращать массив ([[2, 3], [5, 6]])
т. Е. Команда разъясняет, как: дайте мне все строки, взяв по 2 за раз. Плюс дайте мне только последние 2 столбца.
Это заняло у меня некоторое время, чтобы разобраться. Таким образом, вставляя его здесь, на всякий случай это помогает кому-то.
Как выглядит пример вашего Q "1x2" ...? И как у него есть два первых столбца? Я должен быть смущен ... –
@Alex: видя результаты, я ожидаю, что он имел в виду последние две колонки :) И 1x2 ... хорошо. Есть 3 массива из 2 элементов, вы можете видеть это как это;) Вы совершенно правы, хотя, +1 – Wolph
Да, я думаю, это была опечатка. исправлено это – mithunpaul