2013-07-26 4 views
3

Я читаю код и я вижу " list[:,i] for i in range(0,list))......""[:,]" список sliced ​​python, что это значит?

Я заинтригован, как к тому, что запятая там делает, :, и Google не дает никаких ответов, как вы не можете Google пунктуации.

Любая помощь очень ценится!

+3

Результаты поиска в googling 'python comma'. Просто упомянул об этом, потому что вы упомянули о трудностях поиска этого. – keyser

+0

Это странный пример, если переменная 'list' является многомерным массивом numpy (как предполагает Martijn), последний бит' for i in range (0, list) 'не имеет смысла. Также наличие переменной, называемой 'list', плохо, потому что она скрывает функцию' list' Python ... –

ответ

10

Вы изучаете многомерную решетку numpy.

Запятая отмечает кортеж, прочитать его как [(:, i)], который numpy массивы интерпретировать, как: первое измерение, чтобы быть нарезан из конца в конец (все строки) с :, то для каждой строки, i выбирает один столбца.

См. Indexing, Slicing and Iterating в уроке numpy.

+0

Кажется странным способом делать ... 'для столбца в списке.T' –

+0

@JonClements: Предполагая, мерный. В противном случае вам понадобится 'numpy.swapaxes()' для замены второй и первой оси. –

+0

@SvenMarnach: справа; моя новизна с numpy сияет здесь. –

2

Не пытайтесь найти ответ Мартинна, но я был озадачен этим, так что написал себе небольшой проводник getitem, который показывает, что происходит. Python дает объект slice для getitem, что объекты могут решить, что делать. Многомерные массивы также являются кортежами.

>>> class X(object): 
...  def __getitem__(self, name): 
...    print type(name),name 
... 
>>> x=X() 
>>> x[:,2] 
<type 'tuple'> (slice(None, None, None), 2) 
>>> x[1,2,3,4] 
<type 'tuple'> (1, 2, 3, 4) 
>>> 
+0

+1, это показывает, что объекты, отличные от массива numpy, могут быть индексируется с помощью кортежа (обратите внимание, что OP не содержит тег numpy). Тем не менее этот 'x' приводит к ошибке с' for i в диапазоне (0, x) '. OP должен опубликовать еще какой-то код, который он читал ... –