You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by sr...@apache.org on 2019/01/17 20:25:40 UTC
[spark] branch branch-2.3 updated: [SPARK-26638][PYSPARK][ML]
Pyspark vector classes always return error for unary negation
This is an automated email from the ASF dual-hosted git repository.
srowen pushed a commit to branch branch-2.3
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/branch-2.3 by this push:
new 8debdbd [SPARK-26638][PYSPARK][ML] Pyspark vector classes always return error for unary negation
8debdbd is described below
commit 8debdbdd8cd6032497353e604e61fa1215803881
Author: Sean Owen <se...@databricks.com>
AuthorDate: Thu Jan 17 14:24:21 2019 -0600
[SPARK-26638][PYSPARK][ML] Pyspark vector classes always return error for unary negation
## What changes were proposed in this pull request?
Fix implementation of unary negation (`__neg__`) in Pyspark DenseVectors
## How was this patch tested?
Existing tests, plus new doctest
Closes #23570 from srowen/SPARK-26638.
Authored-by: Sean Owen <se...@databricks.com>
Signed-off-by: Sean Owen <se...@databricks.com>
(cherry picked from commit 0b3abef1950f486001160ec578e4f628c199eeb4)
Signed-off-by: Sean Owen <se...@databricks.com>
---
python/pyspark/ml/linalg/__init__.py | 6 +++++-
python/pyspark/mllib/linalg/__init__.py | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/python/pyspark/ml/linalg/__init__.py b/python/pyspark/ml/linalg/__init__.py
index ad1b487..c2fc29d 100644
--- a/python/pyspark/ml/linalg/__init__.py
+++ b/python/pyspark/ml/linalg/__init__.py
@@ -270,6 +270,8 @@ class DenseVector(Vector):
DenseVector([3.0, 2.0])
>>> u % 2
DenseVector([1.0, 0.0])
+ >>> -v
+ DenseVector([-1.0, -2.0])
"""
def __init__(self, ar):
if isinstance(ar, bytes):
@@ -436,6 +438,9 @@ class DenseVector(Vector):
def __getattr__(self, item):
return getattr(self.array, item)
+ def __neg__(self):
+ return DenseVector(-self.array)
+
def _delegate(op):
def func(self, other):
if isinstance(other, DenseVector):
@@ -443,7 +448,6 @@ class DenseVector(Vector):
return DenseVector(getattr(self.array, op)(other))
return func
- __neg__ = _delegate("__neg__")
__add__ = _delegate("__add__")
__sub__ = _delegate("__sub__")
__mul__ = _delegate("__mul__")
diff --git a/python/pyspark/mllib/linalg/__init__.py b/python/pyspark/mllib/linalg/__init__.py
index 7b24b3c..ced1eca 100644
--- a/python/pyspark/mllib/linalg/__init__.py
+++ b/python/pyspark/mllib/linalg/__init__.py
@@ -281,6 +281,8 @@ class DenseVector(Vector):
DenseVector([3.0, 2.0])
>>> u % 2
DenseVector([1.0, 0.0])
+ >>> -v
+ DenseVector([-1.0, -2.0])
"""
def __init__(self, ar):
if isinstance(ar, bytes):
@@ -480,6 +482,9 @@ class DenseVector(Vector):
def __getattr__(self, item):
return getattr(self.array, item)
+ def __neg__(self):
+ return DenseVector(-self.array)
+
def _delegate(op):
def func(self, other):
if isinstance(other, DenseVector):
@@ -487,7 +492,6 @@ class DenseVector(Vector):
return DenseVector(getattr(self.array, op)(other))
return func
- __neg__ = _delegate("__neg__")
__add__ = _delegate("__add__")
__sub__ = _delegate("__sub__")
__mul__ = _delegate("__mul__")
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org