Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
-------
COO
The converted :obj:`COO` object.
Examples
--------
>>> x = scipy.sparse.rand(6, 3, density=0.2)
>>> s = COO.from_scipy_sparse(x)
>>> np.array_equal(x.todense(), s.todense())
True
"""
x = x.asformat("coo")
coords = np.empty((2, x.nnz), dtype=x.row.dtype)
coords[0, :] = x.row
coords[1, :] = x.col
return COO(
coords,
x.data,
shape=x.shape,
has_duplicates=not x.has_canonical_format,
sorted=x.has_canonical_format,
)
"""
from .core import COO
check_zero_fill_value(x)
if not x.ndim >= 2:
raise NotImplementedError(
"sparse.triu is not implemented for scalars or 1-D arrays."
)
mask = x.coords[-2] + k <= x.coords[-1]
coords = x.coords[:, mask]
data = x.data[mask]
return COO(coords, data, shape=x.shape, has_duplicates=False, sorted=True)
self.data,
shape=self.shape,
fill_value=self.fill_value,
)
if self.ndim == 1:
return COO(
self.indices[None, :],
self.data,
shape=self.shape,
fill_value=self.fill_value,
)
uncompressed = uncompress_dimension(self.indptr)
coords = np.vstack((uncompressed, self.indices))
order = np.argsort(self._axis_order)
return (
COO(
coords,
self.data,
shape=self._compressed_shape,
fill_value=self.fill_value,
)
.reshape(self._reordered_shape)
.transpose(order)
)
return None
func_coords = matched_arrays[0].coords[:, unmatched_mask]
func_data = func_data[unmatched_mask]
if matched_arrays[0].shape != self.shape:
params = _get_broadcast_parameters(matched_arrays[0].shape, self.shape)
func_coords, func_data = _get_expanded_coords_data(
func_coords, func_data, params, self.shape
)
if all(m is None or m for m in mask):
return func_coords, func_data
# Not really sorted but we need the sortedness.
func_array = COO(
func_coords, func_data, self.shape, has_duplicates=False, sorted=True
)
unmatched_mask = np.ones(func_array.nnz, dtype=np.bool)
for arg in unmatched_args:
matched_idx = self._match_coo(func_array, arg, return_midx=True)[0]
unmatched_mask[matched_idx] = False
coords = np.asarray(func_array.coords[:, unmatched_mask], order="C")
data = np.asarray(func_array.data[unmatched_mask], order="C")
return coords, data
shape = list(arrays[0].shape)
shape.insert(axis, len(arrays))
nnz = 0
dim = 0
new = np.empty(shape=(coords.shape[1],), dtype=np.intp)
for x in arrays:
new[nnz : x.nnz + nnz] = dim
dim += 1
nnz += x.nnz
coords = [coords[i] for i in range(coords.shape[0])]
coords.insert(axis, new)
coords = np.stack(coords, axis=0)
return COO(
coords,
data,
shape=shape,
has_duplicates=False,
sorted=(axis == 0),
fill_value=arrays[0].fill_value,
)
if isinstance(index, str):
data = x.data[index]
idx = np.where(data)
data = data[idx].flatten()
coords = list(x.coords[:, idx[0]])
coords.extend(idx[1:])
fill_value_idx = np.asarray(x.fill_value[index]).flatten()
fill_value = (
fill_value_idx[0] if fill_value_idx.size else _zero_of_dtype(data.dtype)[()]
)
if not equivalent(fill_value, fill_value_idx).all():
raise ValueError("Fill-values in the array are inconsistent.")
return COO(
coords,
data,
shape=x.shape + x.data.dtype[index].shape,
has_duplicates=False,
sorted=True,
fill_value=fill_value,
)
# Otherwise, convert into a tuple.
if not isinstance(index, tuple):
index = (index,)
# Check if the last index is an ellipsis.
last_ellipsis = len(index) > 0 and index[-1] is Ellipsis
# Normalize the index into canonical form.
def tocoo(self):
"""
Convert this :obj:`GCXS` array to a :obj:`COO`.
Returns
-------
sparse.COO
The converted COO array.
"""
if self.ndim == 0:
return COO(
np.array([])[None],
self.data,
shape=self.shape,
fill_value=self.fill_value,
)
if self.ndim == 1:
return COO(
self.indices[None, :],
self.data,
shape=self.shape,
fill_value=self.fill_value,
)
uncompressed = uncompress_dimension(self.indptr)
coords = np.vstack((uncompressed, self.indices))
order = np.argsort(self._axis_order)
return (
if method == "outer":
method = "__call__"
cum_ndim = 0
inputs_transformed = []
for inp in inputs:
inputs_transformed.append(inp[(Ellipsis,) + (None,) * cum_ndim])
cum_ndim += inp.ndim
inputs = tuple(inputs_transformed)
if method == "__call__":
result = elemwise(ufunc, *inputs, **kwargs)
elif method == "reduce":
result = COO._reduce(ufunc, *inputs, **kwargs)
else:
return NotImplemented
if out is not None:
(out,) = out
if out.shape != result.shape:
raise ValueError(
"non-broadcastable output operand with shape %s "
"doesn't match the broadcast shape %s" % (out.shape, result.shape)
)
out._make_shallow_copy_of(result)
return out
return result
elif not isinstance(x[0][0], Iterable):
coords = np.stack(x[1], axis=0)
data = np.asarray(x[0], dtype=dtype)
else:
coords = np.array([item[0] for item in x]).T
data = np.array([item[1] for item in x], dtype=dtype)
if not (
coords.ndim == 2
and data.ndim == 1
and np.issubdtype(coords.dtype, np.integer)
and np.all(coords >= 0)
):
raise ValueError("Invalid iterable to convert to COO.")
return COO(coords, data, shape=shape, fill_value=fill_value)