Hoe “TypeError: len() of unsized object” op te lossen

Ik krijg:

TypeError: len() van niet-gedimensioneerd object

na het uitvoeren van het volgende script:

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')

Hoe kan ik dit oplossen?


Antwoord 1, autoriteit 100%

Gebruik de sizeattribuut in plaats daarvan:

nv = v.size
nu = u.size

U wilt waarschijnlijk ook numpy.fromstringom de invoerstring te nemen en om te zetten in een array:

>>> 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

Antwoord 2

Voor mij deed deze fout zich voor toen ik de volgende situatie had:

import numpy as np
arr = np.array([[1]])
arr_squeezed = arr.squeeze()
len(arr_squeezed)  # TypeError: len() of unsized object

Om dit goed te laten werken, moet u ervoor zorgen dat de array die u samenknijpt meer dan één element bevat.

Other episodes