2016-05-29 2 views
1

Я создал функцию python для экспоненции матрицы и импортировал ее как пользовательскую функцию в Excel с использованием DataNitro. Однако, когда я использую эту формулу, я получаю результат как список python в одной ячейке.Определенные пользователем формулы массива в DataNitro

Возможно ли создавать формулы массивов для excel с использованием DataNitro, аналогичного строкам с MMULT или MINVERSE?

Ниже мой питон код и снимок первенствовать листа:

functions.py

import numpy as np 

def mat_expo(x,n): 
    if(n==2): 
     return mat_mult(x,x) 
    else: 
     return mat_mult(x,mat_expo(x,n-1)) 

def mat_mult(x,y): 
    return np.dot(x,y) 

Лист Excel:

my excel sheet

ответ

0

Невозможно вернуться к нескольким ячейкам из одной функции DataNitro. Вы можете получить тот же результат следующим образом:

def mat_expo_entry(x, n, i, j): 
    return mat_expo(x, n)[i][j] 

Использование =mat_expo_entry($B$2:$D$4,3,ROW()-7,COLUMN()-2) в вашем образце таблицы в ячейках B7:D9 правильно напечатать выход.

Если это медленно, вы можете хранить ответ, используя Python встроенного кэша LRU:

from functools32 import lru_cache # use 'functools' in Python3 

@lru_cache 
def mat_expo(x,n): 
if(n==2): 
    return mat_mult(x,x) 
else: 
    return mat_mult(x,mat_expo(x,n-1)) 

В качестве альтернативы, можно использовать скрипт DataNitro для печати результата непосредственно на лист.

Смежные вопросы