TypeError:只有length-1数组可以转换为Python标量Python Array和Numpy

时间:2018-07-19 12:17:35

标签: python arrays numpy

这是我的代码。但我有上述错误。我之前进行过搜索,但没有帮助我找到答案。此代码中有什么不正确?

import numpy as np 
import math

def sigmoid(x):
    s = np.array(None)
    for i in x:
        np.append(s,(1/(math.exp(-x)+1)))

    return s

x = np.array([1, 2, 3])
sigmoid(x)

<ipython-input-31-8e002c20e792> in sigmoid(x)
     17     s = np.array(None)`
     18     for i in x:
---> 19         np.append(s,(1/(math.exp(-x)+1)))
     20     return s
TypeError: only length-1 arrays can be converted to Python scalars

1 个答案:

答案 0 :(得分:0)

只需将math.exp替换为np.exp。前者是Python内置的,仅能理解标量(因此会出现错误消息)。

还要注意,np.append()返回结果,并且不修改其参数。因此,您需要将结果分配回s。另外请注意,重复追加到NumPy数组是一种反模式-您应在开始时分配整个数组。