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 size
attribuut in plaats daarvan:
nv = v.size
nu = u.size
U wilt waarschijnlijk ook numpy.fromstring
om 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.