NumPy的__array_prepare__错误(Numpy __array_prepare__

2019-10-16 16:26发布

我试图让一个配方的工作,我在网上找到了做期望值最大化( http://code.activestate.com/recipes/577735-expectation-maximization/ )。 我遇到了以下错误:

Traceback (most recent call last):
  File "./runem.py", line 7, in <module>
    print expectation_maximization([[1,2,3,4,5],[2,3,4,5,6],[9,8,7,4,1]], 2)
  File "/local/scratch-3/dk427/rp/em.py", line 83, in expectation_maximization
    Px[o,c] = pnorm(t[o,:], params[c]['mu'], params[c]['sigma'])
  File "/local/scratch-3/dk427/rp/em.py", line 18, in pnorm
    xmt = np.matrix(x-m).transpose()
TypeError: __array_prepare__ must return an ndarray or subclass thereof which is otherwise identical to its input

必须有在算法的一些缺陷,或者我给它输入错误,但我找不到什么错。 我发现,错误是由减法造成的xm ,但是x.dtype=int64m.dtype=float64 ,我认为应该工作。

有没有人有什么想法?

Answer 1:

你似乎在传递一个列表的列表,而不是一个数组。 你可以这样做:

ts = np.array([[1,2,3,4,5],[2,3,4,5,6],[9,8,7,4,1]])
expectation_maximization(ts, 2)

这似乎已经在某些时候一些问题,采取了平方根我的电脑上,但我认为这可能是因为该数据是不适合这个算法出于某种原因(但我不知道是什么算法试图这样做,所以我不能肯定地说)。



文章来源: Numpy __array_prepare__ error