Согласно этот блестящий ответ:
В Python модули должны быть импортированы, прежде чем они станут доступны. import logging импортирует только модуль регистрации. Случается, что регистрация представляет собой пакет с субмодулями, но эти субмодули по-прежнему не загружаются автоматически. Итак, вам нужно явно импортировать logging.handlers, прежде чем вы сможете получить к нему доступ.
Если вам интересно, почему это выглядит, иногда вам не нужны эти дополнительные импорты: некоторые пакеты импортируют некоторые или все свои подмодули когда они импортируются - просто выполняя эти импорта в их init .py файлах. В других случаях это может быть что-то еще, что вы импортируете, также импортированные logging.handlers. Неважно, какой фрагмент кода выполняет импорт; пока что-то в вашем процессе импортирует logging.handlers, прежде чем вы получите к нему доступ, оно будет там. И иногда модуль, который выглядит как пакет, на самом деле не один, как os и os.path. os не является пакетом, он просто импортирует правильный другой модуль (для вашей платформы) и называет его path, просто чтобы вы могли получить к нему доступ как os.path.
Так что, если мы углубимся в scipy.sparse
и видим его __init__.py
мы видим, что они не импортировали подмодули при загрузке базового модуля. Это блок кода, который выполняет импорт:
from __future__ import division, print_function, absolute_import
# Original code by Travis Oliphant.
# Modified and extended by Ed Schofield, Robert Cimrman,
# Nathan Bell, and Jake Vanderplas.
import warnings as _warnings
from .base import *
from .csr import *
from .csc import *
from .lil import *
from .dok import *
from .coo import *
from .dia import *
from .bsr import *
from .construct import *
from .extract import *
from ._matrix_io import *
# For backward compatibility with v0.19.
from . import csgraph
Итак, для вашего вопроса все, что вам нужно сделать, это:
from scipy.sparse import linalg
И затем позвоните linalg.norm
на разреженной матрице.