2016-05-29 11 views
1

行列を累乗するpython関数を作成し、DataNitroを使用してExcelでユーザー定義関数としてインポートしました。しかし、私はこの式を使用すると、結果を1つのセルにあるPythonリストとして取得します。DataNitroのユーザー定義配列の数式

DataNitroをMMULTまたはMINVERSEと同じように使用してExcelの配列式を作成することはできますか?以下は

は私のPythonコードとExcelシートのスナップショットです:

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) 

エクセルシート:

my excel sheet

答えて

0

1つのDataNitro関数から複数のセルに戻る方法はありません。次のように同じ結果を得ることができます。

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

細胞B7:D9であなたのサンプルスプレッドシートの使用=mat_expo_entry($B$2:$D$4,3,ROW()-7,COLUMN()-2)は正しく出力を印刷します。

これが遅い場合は、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スクリプトを使用することができます。

関連する問題