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)Обычное скалярное произведение
Удалить нулевые элементы из массива/матрицы
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)Изменить размер массива/матрицы на месте до размеров, заданных
shaperint()Поэлементный rint.
setdiag(values[, k])Установить диагональные или внедиагональные элементы массива/матрицы.
sign()Поэлементный знак.
sin()Поэлементный синус.
sinh()Поэлементный sinh.
Сортировать индексы этого массива/матрицы на месте
Вернуть копию этого массива/матрицы с отсортированными индексами
sqrt()Поэлементное вычисление квадратного корня.
sum([axis, dtype, out])Суммировать элементы массива/матрицы по заданной оси.
Устранить дублирующиеся записи, складывая их вместе
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]])