numpy 如何修复“TypeError:lens()of unsized object”

q35jwt9p  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(231)

我得到:

类型错误:len()of unsized object

运行以下脚本后:

from numpy import *

v=array(input('Introduce un vector v: '))
u=array(input('Introduce un vector u: '))

nv= len(v)
nu= len(u)

diferenza= 0; i=0

if nv==nu:

    while i<nv:
        diferenza=diferenza + ((v[i+1]-u[i+1]))**2

    modulo= sqrt(diferenza)
    print('Distancia', v)
else:
    print('Vectores de diferente dimensión')

我该怎么办?

0ve6wy6x

0ve6wy6x1#

使用数组的size属性:

nv = v.size
nu = u.size

您可能还希望使用numpy.fromstring将输入字符串转换为数组:

>>> v = np.fromstring(input('enter the elements of the vector separated by comma: '), dtype=int, sep=',')
enter the elements of the vector separated by comma: 1, 2, 3
>>> v
array([1, 2, 3])
>>> len(v)
3
>>> v.size
3
vtwuwzda

vtwuwzda2#

对我来说,这个错误发生时,我有以下情况:

import numpy as np

arr = np.array([[1]])

arr_squeezed = arr.squeeze()
len(arr_squeezed)  # TypeError: len() of unsized object

要使其正常工作,请确保您正在压缩的数组包含多个元素。

klh5stk1

klh5stk13#

在我的例子中,我必须向两个numpy数组输入两组值,但它不起作用。

import numpy as np
x=np.array(input('enter x values '))
y=np.array(input('enter y values '))
m=(len(x)*sum(x*y)-sum(x)*sum(y))/(len(x)*sum(x*x)-sum(x)**2)
c=(sum(y)-m*sum(x))/len(x)
print ('the required straight line is','y=',m,'x+ ',c)

这就是出现的错误。“类型错误:lens()of unsized object”
然后我通过添加eval()函数修改了它,一切都很好。

import numpy as np
x = np.array(eval(input("enter x value: ")))
y = np.array(eval(input("enter y value: ")))
m = ( len(x)*sum(x*y)-sum(x)*sum(y))/(len(x)*sum(x**2)-sum(x)**2)
c = (sum(y)-m*sum(x))/len(x)

print("The required straightline is: y =",m,"x +",round(c,5))

相关问题