индексация в модуле python numpy - PullRequest
0 голосов
/ 13 февраля 2020

Итак, я новичок в python и изучаю модуль NumPy. Вот мой массив

c = np.array([[[  0,   1,   2],
               [ 10,  12,  13]],
              [[100, 101, 102],
               [110, 112, 113]]])

в указанном выше массиве, если я пытаюсь получить к нему доступ через

c[:1,0:]

, он выдает ожидаемый результат, который

# expected because print from initial to row 1,0 excluding row 1,0
 array([[[ 0,  1,  2],  
         [10, 12, 13]]]) 

, но теперь, когда Я пытаюсь получить доступ к нему через

c[:1,1:]

, он выдает вывод, что

array([[[10, 12, 13]]])

почему ???

1 Ответ

1 голос
/ 13 февраля 2020

Это трехмерный массив. Вы можете проверить это с помощью

print(c.shape)

, что дает

(2, 2, 3)

Действительно ли 3D массив действительно то, что вы хотите sh сделать?

Если это так, если вы нарежете его двумя индексами вместо трех, это означает, что третий неявно равен :. Таким образом, c[1, 1] эквивалентно c [1, 1,:], что эквивалентно c[1, 1, 0:3].

И ваш запрос c[:1,1:] эквивалентен c[0, 1, 0:3]: это правильный результат.

Теперь, согласно вашему комментарию, я думаю, вы sh измените форму, отфильтруйте и измените форму:

c.reshape(4, -1)[:3,:].reshape(1, 3, -1)

урожайность

array([[[  0,   1,   2],
        [ 10,  12,  13],
        [100, 101, 102]]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...