Как я могу предоставить синтаксический сахар для нарезки массива numpy? - PullRequest
0 голосов
/ 06 октября 2018

Я хотел бы написать более читаемый код, выполнив что-то вроде:

import numpy as np

SLICE_XY = slice(0, 2)
SLICE_Z = slice(2, 3)

data = np.array([[0, 1, 2],
                 [3, 4, 5],
                 [6, 7, 8],
                 [9, 10, 11]])

xy = data[:, SLICE_XY]
z = data[:, SLICE_Z]

Однако я столкнулся с проблемой, которая при выполнении вышеизложенного производит

>>> xy
array([[ 0,  1],
       [ 3,  4],
       [ 6,  7],
       [ 9, 10]])
>>> z
array([[ 2],
       [ 5],
       [ 8],
       [11]])

, чтоЯ ожидал для xy.Но для z я ожидал, что это будет эквивалентно

>>> data[:, 2]
array([ 2,  5,  8, 11])

Примечание:

>>> data[:, 0:2]
array([[ 0,  1],
       [ 3,  4],
       [ 6,  7],
       [ 9, 10]])

1 Ответ

0 голосов
/ 06 октября 2018
SLICE_Z = 2

По своей конструкции arr [0: 1] отличается от arr [0].Ломтики всегда возвращают итерации.

...