aboutsummaryrefslogtreecommitdiff
path: root/python/pyspark/mllib/linalg.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/pyspark/mllib/linalg.py')
-rw-r--r--python/pyspark/mllib/linalg.py48
1 files changed, 28 insertions, 20 deletions
diff --git a/python/pyspark/mllib/linalg.py b/python/pyspark/mllib/linalg.py
index a80320c52d..38b3aa3ad4 100644
--- a/python/pyspark/mllib/linalg.py
+++ b/python/pyspark/mllib/linalg.py
@@ -25,7 +25,13 @@ SciPy is available in their environment.
import sys
import array
-import copy_reg
+
+if sys.version >= '3':
+ basestring = str
+ xrange = range
+ import copyreg as copy_reg
+else:
+ import copy_reg
import numpy as np
@@ -57,7 +63,7 @@ except:
def _convert_to_vector(l):
if isinstance(l, Vector):
return l
- elif type(l) in (array.array, np.array, np.ndarray, list, tuple):
+ elif type(l) in (array.array, np.array, np.ndarray, list, tuple, xrange):
return DenseVector(l)
elif _have_scipy and scipy.sparse.issparse(l):
assert l.shape[1] == 1, "Expected column vector"
@@ -88,7 +94,7 @@ def _vector_size(v):
"""
if isinstance(v, Vector):
return len(v)
- elif type(v) in (array.array, list, tuple):
+ elif type(v) in (array.array, list, tuple, xrange):
return len(v)
elif type(v) == np.ndarray:
if v.ndim == 1 or (v.ndim == 2 and v.shape[1] == 1):
@@ -193,7 +199,7 @@ class DenseVector(Vector):
DenseVector([1.0, 0.0])
"""
def __init__(self, ar):
- if isinstance(ar, basestring):
+ if isinstance(ar, bytes):
ar = np.frombuffer(ar, dtype=np.float64)
elif not isinstance(ar, np.ndarray):
ar = np.array(ar, dtype=np.float64)
@@ -321,11 +327,13 @@ class DenseVector(Vector):
__sub__ = _delegate("__sub__")
__mul__ = _delegate("__mul__")
__div__ = _delegate("__div__")
+ __truediv__ = _delegate("__truediv__")
__mod__ = _delegate("__mod__")
__radd__ = _delegate("__radd__")
__rsub__ = _delegate("__rsub__")
__rmul__ = _delegate("__rmul__")
__rdiv__ = _delegate("__rdiv__")
+ __rtruediv__ = _delegate("__rtruediv__")
__rmod__ = _delegate("__rmod__")
@@ -344,12 +352,12 @@ class SparseVector(Vector):
:param args: Non-zero entries, as a dictionary, list of tupes,
or two sorted lists containing indices and values.
- >>> print SparseVector(4, {1: 1.0, 3: 5.5})
- (4,[1,3],[1.0,5.5])
- >>> print SparseVector(4, [(1, 1.0), (3, 5.5)])
- (4,[1,3],[1.0,5.5])
- >>> print SparseVector(4, [1, 3], [1.0, 5.5])
- (4,[1,3],[1.0,5.5])
+ >>> SparseVector(4, {1: 1.0, 3: 5.5})
+ SparseVector(4, {1: 1.0, 3: 5.5})
+ >>> SparseVector(4, [(1, 1.0), (3, 5.5)])
+ SparseVector(4, {1: 1.0, 3: 5.5})
+ >>> SparseVector(4, [1, 3], [1.0, 5.5])
+ SparseVector(4, {1: 1.0, 3: 5.5})
"""
self.size = int(size)
assert 1 <= len(args) <= 2, "must pass either 2 or 3 arguments"
@@ -361,8 +369,8 @@ class SparseVector(Vector):
self.indices = np.array([p[0] for p in pairs], dtype=np.int32)
self.values = np.array([p[1] for p in pairs], dtype=np.float64)
else:
- if isinstance(args[0], basestring):
- assert isinstance(args[1], str), "values should be string too"
+ if isinstance(args[0], bytes):
+ assert isinstance(args[1], bytes), "values should be string too"
if args[0]:
self.indices = np.frombuffer(args[0], np.int32)
self.values = np.frombuffer(args[1], np.float64)
@@ -591,12 +599,12 @@ class Vectors(object):
:param args: Non-zero entries, as a dictionary, list of tupes,
or two sorted lists containing indices and values.
- >>> print Vectors.sparse(4, {1: 1.0, 3: 5.5})
- (4,[1,3],[1.0,5.5])
- >>> print Vectors.sparse(4, [(1, 1.0), (3, 5.5)])
- (4,[1,3],[1.0,5.5])
- >>> print Vectors.sparse(4, [1, 3], [1.0, 5.5])
- (4,[1,3],[1.0,5.5])
+ >>> Vectors.sparse(4, {1: 1.0, 3: 5.5})
+ SparseVector(4, {1: 1.0, 3: 5.5})
+ >>> Vectors.sparse(4, [(1, 1.0), (3, 5.5)])
+ SparseVector(4, {1: 1.0, 3: 5.5})
+ >>> Vectors.sparse(4, [1, 3], [1.0, 5.5])
+ SparseVector(4, {1: 1.0, 3: 5.5})
"""
return SparseVector(size, *args)
@@ -645,7 +653,7 @@ class Matrix(object):
"""
Convert Matrix attributes which are array-like or buffer to array.
"""
- if isinstance(array_like, basestring):
+ if isinstance(array_like, bytes):
return np.frombuffer(array_like, dtype=dtype)
return np.asarray(array_like, dtype=dtype)
@@ -677,7 +685,7 @@ class DenseMatrix(Matrix):
def toSparse(self):
"""Convert to SparseMatrix"""
indices = np.nonzero(self.values)[0]
- colCounts = np.bincount(indices / self.numRows)
+ colCounts = np.bincount(indices // self.numRows)
colPtrs = np.cumsum(np.hstack(
(0, colCounts, np.zeros(self.numCols - colCounts.size))))
values = self.values[indices]