Вы можете использовать обычные списки python (которые являются динамическими) в качестве векторов. Ниже приводится тривиальный пример.
from scipy.spatial.distance import sqeuclidean
a = [1,2,3]
b = [0,0,0]
print sqeuclidean(a,b) # 14
По предложению aganders3, то просто обратите внимание, что вы можете также использовать Numpy массивы, если это необходимо:
import numpy
a = numpy.array([1,2,3])
Если разреженная часть вашего вопроса очень важна, я хотел бы использовать SciPy для этого - она имеет поддержка разреженных матриц. Вы можете определить матрицу 1xn и использовать ее как вектор. Это работает (параметр является размер матрицы, заполняются нулями по умолчанию):
sqeuclidean(scipy.sparse.coo_matrix((1,3)),scipy.sparse.coo_matrix((1,3))) # 0
Есть many kinds разреженных матриц, некоторые словаря на основе (см комментарий). Вы можете определить строки разреженную матрицу из списка, как это:
scipy.sparse.csr_matrix([1,2,3])
Для разреженных расстояний, см [pairwise_distances] (http://scikit-learn.sourceforge.net/dev/modules/generated/sklearn.metrics. pairwise.pairwise_distances.html) в scikit-learn. С scipy.spatial.distance, вам нужно будет, например, cdist (X.todense(), Y.todense(), метрика = ...) – denis