Python 我如何迭代下面的方程来确定根

Python 我如何迭代下面的方程来确定根,python,scipy,curve-fitting,newtons-method,Python,Scipy,Curve Fitting,Newtons Method,上一个问题 如何使用代码为下面的等式确定迭代sigma循环的最佳方式 import statistics as stats import warnings import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas as pd import scipy import scipy.stats import sympy from scipy import stats as st from ite

上一个问题

如何使用代码为下面的等式确定迭代sigma循环的最佳方式

import statistics as stats
import warnings
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import scipy
import scipy.stats
import sympy
from scipy import stats as st
from itertools import islice, count
import itertools

def func_shape_factor(vi, k):
k_list = []  # other name
for vi in np.nditer(vi, flags=['buffered'], op_dtypes=['float64']):
    # k initial guess of 1.5, changable
    k = 1.5
    k = (np.nan_to_num((np.sum((vi) ** (k) * np.log(vi)) / np.sum((vi) ** \
        (k)) - ((np.sum(np.log(vi)) / len(vi))))))
    k_list.append(k)  # append k to the list of ks
return np.array(k)  # cast it to an array after the loop.

发生异常的原因是NumPy函数不是方法。所以你必须称之为:

np.concatenate(arrays)
但是,这在代码中并没有真正意义,因为您已经在内部循环中重新分配了
k
。您可能希望
附加到
k
-列表中,因此需要不同的变量名:

def func_shape_factor(vi, k):
    k_list = []  # other name
    for vi in np.nditer(vi, flags=['buffered'], op_dtypes=['float64']):
        # k initial guess of 1.5, changable
        k = 1.5
        k = (np.nan_to_num((np.sum((vi) ** (k) * np.log(vi)) / np.sum((vi) ** (k)) - ((np.sum(np.log(vi)) / len(vi))))))
        k_list.append(k)  # append k to the list of ks
    return np.array(k)  # cast it to an array after the loop.

不确定这是否仍然满足您的需要。

非常感谢您将解决方案添加到k列表中,并取得了成功。我现在将尝试更正代码的其余部分,这更多的是一个概念问题。@MAULIDIBARASA不确定您的意思,但如果方法发生变化,最好改为问一个新问题:)