关于科学性,我非常业余。我正在尝试在多维变量系统上使用scipy的fmin函数。为了简单起见,我使用的是列表列表。我的数据是12维的,当我输入np.shape(DATA)
时它返回(3,2,2)
,我什至不确定scipy是否可以处理这么多的维,如果不是没有问题的话我可以缩小它们,关键是optimize.fmin()
函数没有'不接受基于列表的数组作为x0
初始参数,因此我需要帮助将x0
数组重写为numpy兼容的数组,或者将整个DATA数组重写为12维矩阵或类似的东西。
这是说明问题的更简单的示例:
from scipy import optimize
import numpy as np
def f(x): return(x[0][0]*1.5-x[0][1]*2.0+x[1][0]*2.5-x[1][1]*3.0)
result = optimize.fmin(f,[[0.1,0.1],[0.1,0.1]])
print(result)
它会说invalid index to scalar variable
,这可能是由于不了解列表结构的[[],[]]
列表,所以它可能只理解numpy数组格式。
所以如何重写此代码以使其正常工作,以及我的(3,2,2)形列表也是如此!
关于科学性,我非常业余。我正在尝试在多维变量系统上使用scipy的fmin函数。为了简单起见,我使用的是列表列表。我的数据是12 ...
scipy.optimize.fmin
需要对函数参数进行初步猜测,以使其成为一维数组,其中包含许多要优化函数的元素。在您的情况下,如果只需要输出与输入参数具有相同形状,则可以使用flatten
和reshape
。基于您的插图代码的示例: