Python Waht&x27;最小化函数的误差

Python Waht&x27;最小化函数的误差,python,numpy,optimization,scipy,minimize,Python,Numpy,Optimization,Scipy,Minimize,我正在用scipy模块中的minimize()函数研究出租车距离。这是“Ipython笔记本软件包”中的源代码 import numpy as np import matplotib.pyplot as plt import pandas as pd import scipy.optimize points = np.array([[10.3, 15.4], [6.5, 8.8], [15.6, 10.3], [4.7, 12.8]]) def make_txmin(points):

我正在用scipy模块中的minimize()函数研究出租车距离。这是“Ipython笔记本软件包”中的源代码

import numpy as np
import matplotib.pyplot as plt
import pandas as pd
import scipy.optimize

points = np.array([[10.3, 15.4], [6.5, 8.8], [15.6, 10.3], [4.7, 12.8]])

def make_txmin(points):
    def txmin_func(p):
        return sum(np.abs(points - p))
    return txmin_func

txmin = make_txmin(points)
x0 = np.array([0., 0.])
res = scipy.optimize.minimize(txmin, x0 , method='nelder-mead',options={'xtol': 1e-5, 'disp':True})
我运行这个源代码,然后我得到了这样一个错误

Traceback (most recent call last):
  File "C:/Users/user/PycharmProjects/IPython/chapter4/taxicab distance.py", line 15, in <module>
    res = scipy.optimize.minimize(txmin, x0 , method='nelder-mead',options={'xtol': 1e-5, 'disp':True})
  File "C:\Users\user\Anaconda3\lib\site-packages\scipy\optimize\_minimize.py", line 435, in minimize
    return _minimize_neldermead(fun, x0, args, callback, **options)
  File "C:\Users\user\Anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 439, in _minimize_neldermead
    fsim[0] = func(x0)
ValueError: setting an array element with a sequence.

Process finished with exit code 1
回溯(最近一次呼叫最后一次):
文件“C:/Users/user/PycharmProjects/IPython/chapter4/taxicab distance.py”,第15行,in
res=scipy.optimize.minimize(txmin,x0,method='nelder-mead',options={'xtol':1e-5,'disp':True})
文件“C:\Users\user\Anaconda3\lib\site packages\scipy\optimize\\u minimize.py”,最小化中第435行
return _minimize_neldermead(fun、x0、args、callback、**选项)
文件“C:\Users\user\Anaconda3\lib\site packages\scipy\optimize\optimize.py”,第439行,在\u neldermead中
fsim[0]=func(x0)
ValueError:使用序列设置数组元素。
进程已完成,退出代码为1

请告诉我这段代码有什么问题,我该怎么办。

尝试检查
sum(np.abs(points-p))
是否真的返回一个值。我记得
sum(np.array)
有时会沿着我不知道的特定轴求和。在函数定义中将
sum
替换为
np.sum
。谢谢,谢谢!!!我解决了这个问题。谢谢大家。试着检查
sum(np.abs(points-p))
是否真的返回一个值。我记得
sum(np.array)
有时会沿着我不知道的特定轴求和。在函数定义中将
sum
替换为
np.sum
。谢谢,谢谢!!!我解决了这个问题。谢谢大家。