scipy.sparse.

csr_array#

класс scipy.sparse.csr_array(arg1, shape=None, dtype=None, copy=False, *, maxprint=None)[источник]#

Массив сжатых разреженных строк.

Это может быть создано несколькими способами:
csr_array(D)

где D — это 2-D ndarray

csr_array(S)

с другой разреженной матрицей или массивом S (эквивалентно S.tocsr())

csr_array((M, N), [dtype])

для создания пустого массива с формой (M, N) dtype опционален, по умолчанию dtype='d'.

csr_array((data, (row_ind, col_ind)), [shape=(M, N)])

где data, row_ind и col_ind удовлетворяют соотношению a[row_ind[k], col_ind[k]] = data[k].

csr_array((data, indices, indptr), [shape=(M, N)])

является стандартным представлением CSR, где индексы столбцов для строки i хранятся в indices[indptr[i]:indptr[i+1]] и их соответствующие значения хранятся в data[indptr[i]:indptr[i+1]]. Если параметр формы не указан, размеры массива выводятся из индексных массивов.

Атрибуты:
dtypedtype

Тип данных массива

shape2-кортеж

Форма массива

ndimint

Количество измерений (всегда равно 2)

nnz

Количество хранимых значений, включая явные нули.

size

Количество сохранённых значений.

данные

Массив данных формата CSR массива

индексы

CSR формат индексного массива массива

indptr

CSR формат указателя индекса массива

has_sorted_indices

Отсортированы ли индексы

has_canonical_format

Имеет ли массив/матрица отсортированные индексы и отсутствие дубликатов

T

Транспонирование.

Методы

__len__()

arcsin()

Поэлементный арксинус.

arcsinh()

Поэлементный arcsinh.

arctan()

Поэлементный арктангенс.

arctanh()

Поэлементный арктангенс гиперболический.

argmax([axis, out, explicit])

Возвращает индексы максимальных элементов вдоль оси.

argmin([axis, out, explicit])

Возвращает индексы минимальных элементов вдоль оси.

asformat(format[, copy])

Вернуть этот массив/матрицу в переданном формате.

astype(dtype[, casting, copy])

Привести элементы массива/матрицы к указанному типу.

ceil()

Поэлементное округление вверх.

check_format([full_check])

Проверка, соответствует ли массив/матрица формату CSR или CSC.

conj([copy])

Поэлементное комплексное сопряжение.

conjugate([copy])

Поэлементное комплексное сопряжение.

copy()

Возвращает копию этого массива/матрицы.

count_nonzero([axis])

Количество ненулевых элементов, эквивалентно

deg2rad()

Поэлементное преобразование градусов в радианы.

diagonal([k])

Возвращает k-ю диагональ массива/матрицы.

dot(other)

Обычное скалярное произведение

eliminate_zeros()

Удалить нулевые элементы из массива/матрицы

expm1()

Поэлементный expm1.

floor()

Поэлементное округление вниз.

log1p()

Поэлементный log1p.

max([axis, out, explicit])

Возвращает максимум массива/матрицы или максимум вдоль оси.

maximum(other)

Поэлементный максимум между этим и другим массивом/матрицей.

mean([axis, dtype, out])

Вычисляет среднее арифметическое вдоль указанной оси.

min([axis, out, explicit])

Возвращает минимум массива/матрицы или максимум вдоль оси.

minimum(other)

Поэлементный минимум между этим и другим массивом/матрицей.

multiply(other)

Поэлементное умножение на другой массив/матрицу.

nanmax([axis, out, explicit])

Вернуть максимум, игнорируя любые NaN, вдоль оси.

nanmin([axis, out, explicit])

Возвращает минимум, игнорируя любые NaN, вдоль оси.

nonzero()

Ненулевые индексы массива/матрицы.

power(n[, dtype])

Эта функция выполняет поэлементное возведение в степень.

prune()

Удалить пустое пространство после всех ненулевых элементов.

rad2deg()

Поэлементное преобразование радиан в градусы.

reshape(self, shape[, order, copy])

Придаёт новую форму разреженному массиву/матрице без изменения данных.

resize(*shape)

Изменить размер массива/матрицы на месте до размеров, заданных shape

rint()

Поэлементный rint.

setdiag(values[, k])

Установить диагональные или внедиагональные элементы массива/матрицы.

sign()

Поэлементный знак.

sin()

Поэлементный синус.

sinh()

Поэлементный sinh.

sort_indices()

Сортировать индексы этого массива/матрицы на месте

sorted_indices()

Вернуть копию этого массива/матрицы с отсортированными индексами

sqrt()

Поэлементное вычисление квадратного корня.

sum([axis, dtype, out])

Суммировать элементы массива/матрицы по заданной оси.

sum_duplicates()

Устранить дублирующиеся записи, складывая их вместе

tan()

Поэлементный тангенс.

tanh()

Поэлементный tanh.

toarray([order, out])

Возвращает плотное представление ndarray для этого разреженного массива/матрицы.

tobsr([blocksize, copy])

Преобразовать этот массив/матрицу в формат Block Sparse Row.

tocoo([copy])

Преобразование этого массива/матрицы в формат COOrdinate.

tocsc([copy])

Преобразовать этот массив/матрицу в формат сжатого разреженного столбца.

tocsr([copy])

Преобразовать этот массив/матрицу в формат сжатых строк (CSR).

todense([order, out])

Возвращает плотное представление этого разреженного массива.

todia([copy])

Преобразовать этот массив/матрицу в разреженный DIAгональный формат.

todok([copy])

Преобразовать этот массив/матрицу в формат Dictionary Of Keys.

tolil([copy])

Преобразовать этот массив/матрицу в формат List of Lists.

trace([offset])

Возвращает сумму по диагоналям разреженного массива/матрицы.

transpose([axes, copy])

Обращает размерности разреженного массива/матрицы.

trunc()

Поэлементное усечение.

__getitem__

__mul__

Примечания

Разреженные массивы можно использовать в арифметических операциях: они поддерживают сложение, вычитание, умножение, деление и возведение матрицы в степень.

Преимущества формата CSR
  • эффективные арифметические операции CSR + CSR, CSR * CSR и т.д.

  • эффективное срезывание строк

  • быстрые матрично-векторные произведения

Недостатки формата CSR
  • медленные операции среза столбцов (рассмотрите CSC)

  • изменения в структуре разреженности дороги (рассмотрите LIL или DOK)

Канонический формат
  • В каждой строке индексы отсортированы по столбцам.

  • Дублирующихся записей нет.

Примеры

>>> import numpy as np
>>> from scipy.sparse import csr_array
>>> csr_array((3, 4), dtype=np.int8).toarray()
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]], dtype=int8)
>>> row = np.array([0, 0, 1, 2, 2, 2])
>>> col = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csr_array((data, (row, col)), shape=(3, 3)).toarray()
array([[1, 0, 2],
       [0, 0, 3],
       [4, 5, 6]])
>>> indptr = np.array([0, 2, 3, 6])
>>> indices = np.array([0, 2, 2, 0, 1, 2])
>>> data = np.array([1, 2, 3, 4, 5, 6])
>>> csr_array((data, indices, indptr), shape=(3, 3)).toarray()
array([[1, 0, 2],
       [0, 0, 3],
       [4, 5, 6]])

Дублирующиеся записи суммируются вместе:

>>> row = np.array([0, 1, 2, 0])
>>> col = np.array([0, 1, 1, 0])
>>> data = np.array([1, 2, 4, 8])
>>> csr_array((data, (row, col)), shape=(3, 3)).toarray()
array([[9, 0, 0],
       [0, 2, 0],
       [0, 4, 0]])

В качестве примера того, как построить CSR-массив инкрементально, следующий фрагмент строит массив терм-документ из текстов:

>>> docs = [["hello", "world", "hello"], ["goodbye", "cruel", "world"]]
>>> indptr = [0]
>>> indices = []
>>> data = []
>>> vocabulary = {}
>>> for d in docs:
...     for term in d:
...         index = vocabulary.setdefault(term, len(vocabulary))
...         indices.append(index)
...         data.append(1)
...     indptr.append(len(indices))
...
>>> csr_array((data, indices, indptr), dtype=int).toarray()
array([[2, 1, 0, 0],
       [0, 1, 1, 1]])