Pythonic способ получить несколько строк матрицы - PullRequest
1 голос
/ 09 июля 2009

Я думал о коде, который я написал несколько лет назад на Python, в какой-то момент он должен был получить только некоторые элементы, по индексу, списка списков.

Я помню, я сделал что-то вроде этого:

def getRows(m, row_indices):
    tmp = []
    for i in row_indices:
        tmp.append(m[i])
    return tmp

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

[m[i] for i in row_indices]

Но мне все еще интересно, есть ли еще более питонский способ сделать это. Есть идеи?

Я хотел бы знать также альтернативы с numpy o для любых других библиотек массивов.

Ответы [ 3 ]

4 голосов
/ 09 июля 2009

Стоит посмотреть на NumPy для его синтаксиса срезов. Прокручивайте вниз по связанной странице, пока не дойдете до «Индексация, нарезка и повторение».

4 голосов
/ 09 июля 2009

Это чистый очевидный способ. Так что я бы сказал, что он не получает больше Pythonic, чем это.

2 голосов
/ 10 июля 2009

Как сказал Курт, похоже, что Numpy - хороший инструмент для этого. Вот пример,

from numpy import *

a = arange(16).reshape((4,4))
b = a[:, [1,2]]
c = a[[1,2], :]

print a
print b
print c

дает

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 1  2]
 [ 5  6]
 [ 9 10]
 [13 14]]
[[ 4  5  6  7]
 [ 8  9 10 11]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...