Извлечь n-е значение из трехмерного массива - PullRequest
0 голосов
/ 29 сентября 2018

Скажем, у меня есть 3D-массив, такой как:

>>> arr = numpy.arange(36).reshape(3, 4, 3)
>>> arr
array([[[ 0,  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, 26],
        [27, 28, 29],
        [30, 31, 32],
        [33, 34, 35]]])

Как извлечь значение n th из каждой внутренней строки?

Если бы яВозьмите значения для индекса 1, как вытащить следующее?

array([[ 1,  4,  7, 10],
       [13, 16, 19, 22],
       [25, 28, 31, 34]])

или

array([ 1,  4,  7, 10, 13, 16, 19, 22, 25, 28, 31, 34])

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Чтобы извлечь элементы из такого массива, вы можете сделать следующее:

>>> import numpy as np   
>>> arr = np.arange(36).reshape(3, 4, 3)
>>> arr[:,:,1]
array([[ 1,  4,  7, 10],
       [13, 16, 19, 22],
       [25, 28, 31, 34]])

и, если вы хотите выровнять массив, вы можете сделать:

>>> arr.flatten()
array([ 1,  4,  7, 10, 13, 16, 19, 22, 25, 28, 31, 34])
0 голосов
/ 29 сентября 2018

Вы можете получить доступ, используя последний индекс:

import numpy

arr = numpy.arange(36).reshape(3, 4, 3)

print(arr[:, :, 1])

Выход

[[ 1  4  7 10]
 [13 16 19 22]
 [25 28 31 34]]

Или

print(arr[:, :, 1].flatten())

Выходные данные

[ 1  4  7 10 13 16 19 22 25 28 31 34]

Более подробную информацию о индексировании можно найти здесь здесь .

ОБНОВЛЕНИЕ

Как уже упоминалось@MadPhysicist в комментариях, вы можете использовать ravel вместо flatten, главное отличие в том, что flatten возвращает копию, а ravel возвращает представление.Также вы можете использовать arr[..., 1] для доступа к последнему индексу, известному как многоточие.Из документации:

Многоточие расширяется до количества: объектов, необходимых для создания набора данных такой же длины, что и x.ndim

Далее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...