Индексирование массива в Numpy Python - PullRequest
2 голосов
/ 02 декабря 2011

Как я могу определить _SOME CODE_ в следующем фрагменте кода, чтобы получить результаты, показанные ниже?

vector = numpy.array([a,b,c,d])
for i in xrange(4):
    print vector[_SOME CODE_ using i]

Это может дать мне такие результаты:

[a,b,c]
[a,c,d]
[a,b,d]
[b,c,d]

порядок не важен.

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011

Ответ на отредактированный вопрос :

>>> vector = numpy.array([0, 1, 2, 3])
>>> for i in xrange(4):
...     print numpy.r_[vector[:i], vector[i+1:]]
... 
[1 2 3]
[0 2 3]
[0 1 3]
[0 1 2]

Ответ на оригинальный вопрос : Вот некоторый случайный код, дающий желаемый результат:

>>> import numpy
>>> vector = numpy.array([0,1,2])
>>> for i in xrange(4):
...     print vector + (vector >= i)
... 
[1 2 3]
[0 2 3]
[0 1 3]
[0 1 2]

Я понятия не имею, хотите ли вы этого - спецификация требований оставила место для интерпретации.

0 голосов
/ 02 декабря 2011

Я думаю, вы пытаетесь найти все комбинации размера 3 вектора.Вы можете сделать это с помощью itertools.combination , например:

>>> import numpy
>>> import itertools
>>> vector = numpy.array([0, 1, 2, 3])
>>> list(itertools.combinations(vector, 3))
[(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...