为什么会出现TypeError:类型为&numpy.float64'的对象没有len()

时间:2017-12-11 16:48:18

标签: python numpy

这是我的代码。

@Component({
  data() {
    return {
      sections: Array<SomeInterface> = []
    }
  }
})

但是这段代码返回TypeError。 我的代码有什么问题?

2 个答案:

答案 0 :(得分:0)

不确定您的预期结果是什么,但由于您将x中的tanh视为数组,因此您可能需要使用np.multiply()方法而不是np.dot()

https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.multiply.html

def tanh(x):
    for i in range(len(x)):
        x[i]=(np.exp(2*x[i])-1)/(np.exp(2*x[i])+1)
    return x


def single_layer_perceptron(x):
    w = np.random.random(x.shape)
    result = np.multiply(x, w)
    return tanh(result)

arr = np.arange(10)
print(arr)

result_list=[]
for i in range(10000):
    result_list.append(single_layer_perceptron(arr))

result_array=np.array(result_list)
print(np.mean(result_array))
print(np.std(result_array))

结果:

[0 1 2 3 4 5 6 7 8 9]
0.719183400513
0.357414867082

此外,您可以使用np.tanh(result)代替您的功能。 result必须是一个数组。 https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.tanh.html

答案 1 :(得分:0)

您确实应该指出错误发生的位置。但我可以用

重新创建它
In [150]: x = np.arange(10)
In [151]: w = np.random.random(x.shape)
In [152]: w
Out[152]: 
array([ 0.15289706,  0.36766394,  0.54739275,  0.11560176,  0.33185064,
        0.27493645,  0.1237475 ,  0.908773  ,  0.50731216,  0.14327178])
In [153]: res = np.dot(x,w)
In [154]: res
Out[154]: 16.963178771225383
In [155]: len(res)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-155-8fa6b1079aa4> in <module>()
----> 1 len(res)

TypeError: object of type 'numpy.float64' has no len()
带有2个1d数组的

np.dot返回内部产品(请参阅其文档),类型为np.float64的对象(带有numpy包装器的float)。这不是数组或列表,因此没有len(),并且不可迭代。这会在tanh函数中产生此错误。