Skip to content

Commit

Permalink
Adds numpy compute backend for string ops
Browse files Browse the repository at this point in the history
  • Loading branch information
Joe Jevnik committed Apr 24, 2015
1 parent 0a91009 commit 28c6688
Showing 1 changed file with 56 additions and 1 deletion.
57 changes: 56 additions & 1 deletion blaze/compute/numpy.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from ..expr import Reduction, Field, Projection, Broadcast, Selection, ndim
from ..expr import Distinct, Sort, Head, Label, ReLabel, Expr, Slice, Join
from ..expr import std, var, count, nunique, Summary, IsIn
from ..expr import BinOp, UnaryOp, USub, Not, nelements
from ..expr import BinOp, UnaryOp, USub, Not, nelements, Repeat, Concat, Interp
from ..expr import UTCFromTimestamp, DateTimeTruncate
from ..expr import Transpose, TensorDot
from ..utils import keywords
Expand Down Expand Up @@ -55,6 +55,61 @@ def broadcast_ndarray(t, *data, **kwargs):
compute_up.register(Broadcast, *([(np.ndarray, Number)] * i))(broadcast_ndarray)


@dispatch(Repeat, np.ndarray)
def compute_up(t, data, **kwargs):
if isinstance(t.lhs, Expr):
return np.tile(data, t.rhs)
else:
return np.tile(t.lhs, data)


@dispatch(Repeat, np.ndarray, (np.ndarray, base))
def compute_up(t, lhs, rhs, **kwargs):
return np.tile(lhs, rhs)


@dispatch(Repeat, base, np.ndarray)
def compute_up(t, lhs, rhs, **kwargs):
return np.tile(lhs, rhs)


@dispatch(Concat, np.ndarray)
def compute_up(t, data, **kwargs):
if isinstance(t.lhs, Expr):
return np.char.add(data, t.rhs)
else:
return np.char.add(t.lhs, data)


@dispatch(Concat, np.ndarray, (np.ndarray, base))
def compute_up(t, lhs, rhs, **kwargs):
return np.char.add(lhs, rhs)


@dispatch(Concat, base, np.ndarray)
def compute_up(t, lhs, rhs, **kwargs):
return np.char.add(lhs, rhs)


@dispatch(Interp, np.ndarray)
def compute_up(t, data, **kwargs):
if isinstance(t.lhs, Expr):
return np.char.mod(data, t.rhs)
else:
return np.char.mod(t.lhs, data)


@dispatch(Interp, np.ndarray, (np.ndarray, base))
def compute_up(t, lhs, rhs, **kwargs):
return np.char.mod(lhs, rhs)


@dispatch(Interp, base, np.ndarray)
def compute_up(t, lhs, rhs, **kwargs):
return np.char.mod(lhs, rhs)



@dispatch(BinOp, np.ndarray, (np.ndarray, base))
def compute_up(t, lhs, rhs, **kwargs):
return t.op(lhs, rhs)
Expand Down

0 comments on commit 28c6688

Please sign in to comment.