Синтаксис подстрочного индекса Python

Можете ли вы уточнить, что [:, :5]делает часть кода в следующем сегменте кода?

for i in range(5):
        weights = None
        test_inputs = testset[i][:, :5]
        test_inputs = test_inputs.astype(np.float32)
        test_answer = testset[i][:, :5]
        test_answer = code_answer(test_answer)

3 ответа

  1. это объясняется в руководстве по индексированию numpy руководства. это не стандартный синтаксис python.

    если у вас есть массивa, a[:]возвращает представление (не копию; назначение этому изменится a) на весь массив; a[:5]представление на элементы 0, 1, ..., 4.

    numpy позволяет индексировать более размерные массивы a[i, j]вместо версии Pure python a[i][j].

    это должно охватывать все ваши случаи.

  2. Этот код, вероятно, использует numpyмассивы.

    Numpy определяет более сложный срез массива, похожий на стиль Matlab.

    Это [:, :5]означает, что из массива (возможно, 2D-массива, возвращаемого Из tester[i]) вы берете все строки (обозначенные:), а затем он принимает Столбцы от начала до, но не включая столбец 5.

    Каждая часть выражения slicing следует обычному синтаксису Python slicing.

    Сам [:, :5]по себе фактически интерпретируется так [(:, :5)], поскольку в Python значения, разделенные запятыми без скобок, интерпретируются как кортеж.

    Объект array может обрабатывать кортежи, обозначающие сложные шаблоны срезов.

    Это вкратце смысл этого синтаксиса.

    Для получения дополнительной информации, вы можете посетить страницу numpy, вы можете начать с http://www.scipy.org.

  3. Как упоминалось другими, массив, на который ссылаются,
    пакет numpy (см. Его домашнюю страницу)

    Пример должен помочь. Сначала создайте многомерную структуру массива, подобную той, которой управляет предоставляемый код:

    from numpy import *
    a=arange(36).reshape(6,6)
    b=a.reshape(6,3,2).swapaxes(0,2)
    print b
    
    [[[0  6 12 18 24 30]
      [2  8 14 20 26 32]
      [4 10 16 22 28 34]]
     [[1  7 13 19 25 31]
      [3  9 15 21 27 33]
      [5 11 17 23 29 35]]]
    

    Синтаксис [:,:5] представляет собой механизм срезания массива, который отбраковывает все
    элементы компонентного массива за пятым:

    print b[1][:,:5]
    
    [[1  7 13 19 25]
     [3  9 15 21 27]
     [5 11 17 23 29]]