Назначение массива в numpy /: эквивалент двоеточия - PullRequest
4 голосов
/ 19 октября 2011

Я пытаюсь связать индексы python / numpy двух массивов с разными размерами, но я не могу передать индекс один из маленького массива в большой массив через подпрограмму.

Например, у меня есть два массива: a1 и a2. a1.shape = (240,33,258) и a2.shape = (240,40,33,258). Я нахожу индексы в a1 и связываю эти индексы с a2. т.е. index1 = numpy.where(a > n). Я могу получить данные, которые мне интересны, используя

dat1 = a1[index]
dat2 = a2[index[0],:,index[1],index[2]]

с результирующими данными в виде dat1.shape = (n) и dat2.shape = (n, 40). Чтобы ускорить программу, я хочу передать индекс через подпрограмму, но я не могу пропустить [index[0],:,index[1],index[2]] через подпрограмму, потому что я не могу передать двоеточие ':'.

Я полагаю, что моим решением было бы передать числовой эквивалент «:» в подпрограмме, но я не нашел ответа.

Любая помощь?

Большое спасибо

Ответы [ 2 ]

6 голосов
/ 19 октября 2011

Вы должны иметь возможность использовать slice(None) для представления :.Как в

[index[0], slice(None), index[1], index[2]]
2 голосов
/ 19 октября 2011

Как уже говорилось, : - это сокращение от slice(None).Вы также можете использовать np.s_[index[0],:,index[1],index[2]] в качестве удобного синтаксиса для построения кортежей срезов.

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