You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by me...@apache.org on 2015/04/01 22:29:07 UTC
spark git commit: [SPARK-6651][MLLIB] delegate dense vector
arithmetics to the underlying numpy array
Repository: spark
Updated Branches:
refs/heads/master ee11be258 -> 2275acce7
[SPARK-6651][MLLIB] delegate dense vector arithmetics to the underlying numpy array
Users should be able to use numpy operators directly on dense vectors. davies atalwalkar
Author: Xiangrui Meng <me...@databricks.com>
Closes #5312 from mengxr/SPARK-6651 and squashes the following commits:
e665c5c [Xiangrui Meng] wrap the result in a dense vector
23dfca3 [Xiangrui Meng] delegate dense vector arithmetics to the underlying numpy array
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/2275acce
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/2275acce
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/2275acce
Branch: refs/heads/master
Commit: 2275acce7ba5fac83c58554d7ee9f4c7f3e866cf
Parents: ee11be2
Author: Xiangrui Meng <me...@databricks.com>
Authored: Wed Apr 1 13:29:04 2015 -0700
Committer: Xiangrui Meng <me...@databricks.com>
Committed: Wed Apr 1 13:29:04 2015 -0700
----------------------------------------------------------------------
python/pyspark/mllib/linalg.py | 38 ++++++++++++++++++++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/2275acce/python/pyspark/mllib/linalg.py
----------------------------------------------------------------------
diff --git a/python/pyspark/mllib/linalg.py b/python/pyspark/mllib/linalg.py
index f5aad28..8b791ff 100644
--- a/python/pyspark/mllib/linalg.py
+++ b/python/pyspark/mllib/linalg.py
@@ -173,7 +173,24 @@ class Vector(object):
class DenseVector(Vector):
"""
- A dense vector represented by a value array.
+ A dense vector represented by a value array. We use numpy array for
+ storage and arithmetics will be delegated to the underlying numpy
+ array.
+
+ >>> v = Vectors.dense([1.0, 2.0])
+ >>> u = Vectors.dense([3.0, 4.0])
+ >>> v + u
+ DenseVector([4.0, 6.0])
+ >>> 2 - v
+ DenseVector([1.0, 0.0])
+ >>> v / 2
+ DenseVector([0.5, 1.0])
+ >>> v * u
+ DenseVector([3.0, 8.0])
+ >>> u / v
+ DenseVector([3.0, 2.0])
+ >>> u % 2
+ DenseVector([1.0, 0.0])
"""
def __init__(self, ar):
if isinstance(ar, basestring):
@@ -292,6 +309,25 @@ class DenseVector(Vector):
def __getattr__(self, item):
return getattr(self.array, item)
+ def _delegate(op):
+ def func(self, other):
+ if isinstance(other, DenseVector):
+ other = other.array
+ return DenseVector(getattr(self.array, op)(other))
+ return func
+
+ __neg__ = _delegate("__neg__")
+ __add__ = _delegate("__add__")
+ __sub__ = _delegate("__sub__")
+ __mul__ = _delegate("__mul__")
+ __div__ = _delegate("__div__")
+ __mod__ = _delegate("__mod__")
+ __radd__ = _delegate("__radd__")
+ __rsub__ = _delegate("__rsub__")
+ __rmul__ = _delegate("__rmul__")
+ __rdiv__ = _delegate("__rdiv__")
+ __rmod__ = _delegate("__rmod__")
+
class SparseVector(Vector):
"""
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org