Utilites

Example source code can be found in ./examples/utilites.py.

import PyVSparse
import numpy as np
import scipy as sp
csc_mat = sp.sparse.random(4, 4, format='csc', dtype=np.int32, density=1)

vcsc = PyVSparse.VCSC(csc_mat)
ivcsc = PyVSparse.IVCSC(csc_mat)

Slice

Slicing is supported for both VCSC and IVCSC matrices, but only along the major axis. Slicing along the minor axis is not supported.

vcsc_half = vcsc.slice(0, 2)
ivcsc_half = ivcsc.slice(0, 2)

Appending

Appending is supported for both VCSC and IVCSC matrices, but only along the major axis. CSC/CSR matrices can be appended to I/VCSC.

vcsc.append(csc_mat)
ivcsc.append(csc_mat)
ivcsc.append(ivcsc)

# NOT ALLOWED
vcsc.append(ivcsc)
ivcsc.append(vcsc)

VCSC Indices, Values, and Counts

VCSC matrices store their indices, values, and counts in separate arrays. These can be copied to a list

index = 0 # The major index to access i.e. column or row to get
indices = vcsc.getIndices(index)
values = vcsc.getValues(index)
counts = vcsc.getCounts(index)

# number of indices is also available
numIndices = vcsc.getNumIndices(index)

Note

IVCSC does not support this becasue of how its stored.

Shape

print(vcsc.shape())
print(ivcsc.shape()[1])

Bytesize

PyVSparse will tell you the exact amount of memory your matrix is using. This does not include class attributes, as your matrix should be using the overwhelming majority of memory.

print(vcsc.byteSize())
print(ivcsc.byteSize())