1

我正在尝试在 numpy 数组的第一列上使用 scipy.stats.johnsonsu.expect() 函数,但预期值函数包括来自 numpy 数组的值:

A = [MxN] array of positive floats
b = 2
ev_Array = ss.johnsonsu.expect(func=lambda x: (x * b) - A[:,0], 
                          args=(dstr_params[0], dstr_params[1]),
                          loc=dstr_params[-2],  
                          scale=dstr_params[-1],          
                          lb=A[:,0] / b,
                          ub=upper_bound / b)

我收到此错误:

Traceback (most recent call last):
  File "myfile.py", line 241, in <module>
    main()
  File "myfile.py", line 214, in main
    ev_Array = ss.johnsonsu.expect(func=lambda x: (x * b) - A[:,0],
  File "~/.local/lib/python3.8/site-packages/scipy/stats/_distn_infrastructure.py", line 2561, in expect
    vals = integrate.quad(fun, lb, ub, **kwds)[0] / invfac
  File "~/.local/lib/python3.8/site-packages/scipy/integrate/quadpack.py", line 348, in quad
    flip, a, b = b < a, min(a, b), max(a, b)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我可以通过对列表的正常迭代来做到这一点,但我想知道如何传入 A,以便输出是一个 [Mx1] 数组,其中包含来自 .expect() 的值,而在 lambda 函数中,A 被保存在计算期望值时保持不变。

4

0 回答 0