Skip to main content

A small package for big slicing.

Project description

slicer [alpha]

License Python Version Package Version Build Status Coverage Maintenance

(Equal Contribution) Samuel Jenkins & Harsha Nori & Scott Lundberg

slicer wraps tensor-like objects and provides a uniform slicing interface via __getitem__.


It supports many data types including:

   numpy | pandas | scipy | pytorch | list | tuple | dict

And enables upgraded slicing functionality on its objects:

# Handles non-integer indexes for slicing.
S(df)[:, ["Age", "Income"]]

# Handles nested slicing in one call.
S(nested_list)[..., :5]

It can also simultaneously slice many objects at once:

# Gets first elements of both objects.
S(first=df, second=ar)[0, :]

This package has 0 dependencies. Not even one.

Installation

Python 3.6+ | Linux, Mac, Windows

pip install slicer

Getting Started

Basic anonymous slicing:

from slicer import Slicer as S
li = [[1, 2, 3], [4, 5, 6]]
S(li)[:, 0:2].o
# [[1, 2], [4, 5]]
di = {'x': [1, 2, 3], 'y': [4, 5, 6]}
S(di)[:, 0:2].o
# {'x': [1, 2], 'y': [4, 5]}

Basic named slicing:

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 3], 'B': [2, 4]})
ar = np.array([[5, 6], [7, 8]])
sliced = S(first=df, second=ar)[0, :]
sliced.first
# A    1
# B    2
# Name: 0, dtype: int64
sliced.second
# array([5, 6])

Real example:

from slicer import Slicer as S
from slicer import Alias as A

data = [[1, 2], [3, 4]]
values = [[5, 6], [7, 8]]
identifiers = ["id1", "id1"]
instance_names = ["r1", "r2"]
feature_names = ["f1", "f2"]
full_name = "A"

slicer = S(
    data=data,
    values=values,
    # Aliases are objects that also function as slicing keys.
    # A(obj, dim) where dim informs what dimension it can be sliced on.
    identifiers=A(identifiers, 0),
    instance_names=A(instance_names, 0),
    feature_names=A(feature_names, 1),
    full_name=full_name,
)

sliced = slicer[:, 1]  # Tensor-like parallel slicing on all objects
assert sliced.data == [2, 4]
assert sliced.instance_names == ["r1", "r2"]
assert sliced.feature_names == "f2"
assert sliced.values == [6, 8]

sliced = slicer["r1", "f2"]  # Example use of aliasing
assert sliced.data == 2
assert sliced.feature_names == "f2"
assert sliced.instance_names == "r1"
assert sliced.values == 6

Contact us

Raise an issue on GitHub, or contact us at interpret@microsoft.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slicer-0.0.8.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

slicer-0.0.8-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file slicer-0.0.8.tar.gz.

File metadata

  • Download URL: slicer-0.0.8.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for slicer-0.0.8.tar.gz
Algorithm Hash digest
SHA256 2e7553af73f0c0c2d355f4afcc3ecf97c6f2156fcf4593955c3f56cf6c4d6eb7
MD5 5ea1bd4d0bbbdb75ed80981e3502b752
BLAKE2b-256 d3f9b4bce2825b39b57760b361e6131a3dacee3d8951c58cb97ad120abb90317

See more details on using hashes here.

File details

Details for the file slicer-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: slicer-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.13

File hashes

Hashes for slicer-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 6c206258543aecd010d497dc2eca9d2805860a0b3758673903456b7df7934dc3
MD5 73ebeb05ff885e4b72e216667146a015
BLAKE2b-256 63819ef641ff4e12cbcca30e54e72fb0951a2ba195d0cda0ba4100e532d929db

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page