in flink-ml-python/pyflink/ml/linalg.py [0:0]
def __init__(self, size: int, *args):
self._size = size
assert 1 <= len(args) <= 2, "The number of arguments must be 2 or 3"
if len(args) == 1:
# a dict, a list of (index, value) pairs
pairs = args[0]
if isinstance(pairs, dict):
pairs = pairs.items()
pairs = sorted(pairs)
self._indices = np.array([p[0] for p in pairs], dtype=np.int32)
self._values = np.array([p[1] for p in pairs], dtype=np.float64)
else:
assert len(args[0]) == len(args[1]), "The length of indices and values should be same"
# two separate arrays of indices and values.
self._indices = np.array(args[0], dtype=np.int32)
self._values = np.array(args[1], dtype=np.float64)
for i in range(len(self._indices) - 1):
if self._indices[i] >= self._indices[i + 1]:
raise TypeError(
"Indices {0} and {1} are not strictly increasing".format(
self._indices[i], self._indices[i + 1]))