Преобразование массива numpy в кортеж
Примечание: это требует обратного обычного преобразования кортежа в массив.
Я должен передать аргумент функции (обернутой c++) как вложенный кортеж. Например, следующие работы
X = MyFunction( ((2,2),(2,-2)) )
, а после не
X = MyFunction( numpy.array(((2,2),(2,-2))) )
X = MyFunction( [[2,2],[2,-2]] )
к сожалению, аргумент, который я хотел бы использовать, приходит ко мне как массив numpy. Этот массив всегда имеет размеры 2xN для некоторых N, что может быть довольно большой.
есть ли простой способ преобразовать это в кортеж? Я знаю, что я мог бы просто перебрать, создав новый Кортеж, но предпочел бы, чтобы был какой-то хороший доступ к массиву numpy.
Если это не возможно сделать так хорошо, как я надеюсь, что это самый красивый способ сделать это с помощью цикла, или что-то еще?
4 ответа:
вот функция, которая сделает это:
def totuple(a): try: return tuple(totuple(i) for i in a) except TypeError: return a
и пример:
>>> array = numpy.array(((2,2),(2,-2))) >>> totuple(array) ((2, 2), (2, -2))