# Element-wise Operations¶

`COO`

arrays support a variety of element-wise operations. However, as
with operators, operations that map zero to a nonzero value are not supported.

To illustrate, the following are all possible, and will produce another
`COO`

array:

```
x.abs()
np.sin(x)
np.sqrt(x)
x.conj()
x.expm1()
np.log1p(x)
```

However, the following are all unsupported and will raise a `ValueError`

:

```
x.exp()
np.cos(x)
np.log(x)
```

Notice that you can apply any unary or binary `numpy.ufunc`

to `COO`

arrays, `scipy.sparse.spmatrix`

objects and scalars and it will work so
long as the result is not dense.

`COO.elemwise`

¶

This function allows you to apply any arbitrary unary or binary function where
the first object is `COO`

, and the second is a scalar, `COO`

, or
a `scipy.sparse.spmatrix`

. For example, the following will add two
`COO`

objects:

```
x.elemwise(np.add, y)
```

## Partial List of Supported `numpy.ufunc`

s¶

Although any unary or binary `numpy.ufunc`

should work if the result is
not dense, when calling in the form `x.func()`

, the following operations
are supported: