python - Check for equal lists -
after reading converting numpy array python list structure?, have:
import numpy np print np.array(centroids).tolist() print "here\n" print old_centroids print type(np.array(centroids).tolist()) print type(old_centroids) which gives:
[[-0.30485176069166947, -0.2874083792427779, 0.0677763505876472], ...,[0.09384637511656496, -0.015282322735474268, -0.05854574606104108]] here [array([-0.30485176, -0.28740838, 0.06777635]), ..., array([-0.03415291, -0.10915068, 0.07733185]), array([ 0.09384638, -0.01528232, -0.05854575])] <type 'list'> <type 'list'> however, when doing:
return old_centroids == np.array(centroids).tolist() i getting error:
return old_centroids == np.array(centroids).tolist() valueerror: truth value of array more 1 element ambiguous. how fix this?
the type of centroids <type 'numpy.ndarray'> , computed this:
from sklearn import decomposition centroids = pca.transform(mean_centroids) note, without pca, do:
return old_centroids == centroids edit_0:
check if 2 unordered lists equal suggests set(), did:
return set(old_centroids) == set(np.array(centroids).tolist()) # or set(centroids) and got:
typeerror: unhashable type: 'list'
since comparing floating-point values better use numpy.allclose() and, consequently, keep values in numpy array form:
return np.allclose(np.array(old_centroids), np.array(centroids)) (notice transformed list of 1d arrays 2d array; technically, can apply allclose() separately each pair of elements old_centroids , centroids, if wish.)
edit (based on comment): if old_centroids , centroids may have different shapes, check before allclose():
old = np.array(old_centroids) new = np.array(centroids) return old.shape == new.shape , np.allclose(old, new)
Comments
Post a Comment