我创建了一个python函数来取代矩阵,并使用DataNitro将其作为用户定义函数导入Excel。但是,当我使用这个公式时,我将结果作为一个单元格中的python列表。
是否可以使用与MMULT或MINVERSE类似的DataNitro为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)
Excel表格:
答案 0 :(得分: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脚本将结果直接打印到工作表。