У меня очень большой редкий csc_matrixx
. Я хочу сделать elementwise exp() на нем. В принципе, я хочу получить тот же результат, что и у меня с numpy.exp(x.toarray())
. Но я не могу этого сделать (моя память не позволит мне преобразовать разреженную матрицу в массив). Есть ли выход? Заранее спасибо!Element wise exp() scipy разреженная матрица
ответ
Если у вас нет памяти для хранения x.toarray()
, у вас нет памяти для хранения вывода, о котором вы просите. Выход не будет скудным; на самом деле, если ваш вход не имеет отрицательные бесконечности в нем, выходе, вероятно, не будет иметь один 0.
Было бы, вероятно, лучше, чтобы вычислить ехр (х) -1, которая так просто, как
x.expm1()
Да, ты прав. Но как я могу это сделать только для ненулевых значений? –
Что это? В разреженных матрицах содержатся все функции numpy, которые имеют нулевое значение в качестве членов? Есть функция, которую я бы не ожидал! –
Да, 'scipy/sparse/data.py' имеет блок кода, который' # Добавляет numary unary ufuncs, для которого func (0) = 0 to _data_matrix.'. Ключ может получить доступ к атрибуту '.data' и создать новую матрицу с помощью метода' _with_data'. Я тоже этого не знал. – hpaulj
Если вы хотите что-то делать только на ненулевых значениях: атрибут data
доступен для записи, по крайней мере, в некоторых представлениях, включая csr
и csc
. В некоторых представлениях допускаются повторяющиеся записи, поэтому убедитесь, что вы действуете на «нормализованной» форме.
Да, это то, о чем я думал. Во всяком случае, я задержу руки! –
Для изменения ненулевых элементов, возможно, это будет работать для вас:
x = some big sparse matrix
np.exp(x.data, out=x.data) # ask np.exp() to store results in existing x.data
предположительно медленнее:
# above seems more efficient (no new memory alloc).
x.data = np.exp(x.data)
Я боролся с тем, как получить поэлементно log2() каждого ненулевого элемента массива. Я закончил тем, что сделал что-л. Вроде:
np.log2(x.data, out=x.data)
Следующие два метода выглядят как именно то, что я искал. Моя матрица разрежена, но все равно множество ненулевых элементов.
Кредит @DSM here за идею прямого изменения x.data, я думаю, что это превосходное представление о разреженных матрицах.
Кредит @Mike Müller за идею использования «вне» как самого себя. В той же теме @kmario23 указывает на важное предостережение о продвижении .data в float (входные данные могут быть int или smth), поэтому он совместим с .exp() или любой другой функцией, я хотел бы сделать это, если бы я писал smth для общего использования.
примечание: Я только начинаю узнавать о разреженных матрицах, поэтому хотел бы знать, является ли это плохая идея для разума, которого я не вижу. Пожалуйста, дайте мне знать, если я нахожусь на тонком льду с этим.
Как правило, я бы не возился с частными атрибутами, но .data довольно четко проявляется в attributes documentation для различных разреженных матриц, на которые я смотрел.
- 1. SciPy большой разреженная матрица
- 2. Scipy разреженная матрица как столбец DataFrame
- 3. Что означает эта разреженная матрица в scipy?
- 4. Scipy: разреженная матрица условное удаление столбцов
- 5. Scipy разреженная матрица к запасной матрице питания
- 6. SciPy разреженная матрица (COO, CSR): Очистить строку
- 7. groupby.sum() разреженная матрица в пандах или SciPy: ищу производительность
- 8. Эффективная инкрементная разреженная матрица в python/scipy/numpy
- 9. NumPy SciPy питон импорта разреженная матрица из CSV
- 10. Dot продукта между 1D Numpy массива и SciPy разреженная матрица
- 11. Scipy разреженная матрица csr возвращает nan on 0.0/1.0
- 12. Scipy разреженная матрица из списка списка с целыми числами
- 13. scipy разреженная матрица: удалите строки, все элементы которых ноль
- 14. Armadillo element wise скорость размножения
- 15. XGBoost и разреженная матрица
- 16. разреженная матрица из триплета
- 17. Юлия разреженная матрица
- 18. разреженная матрица библиотека для
- 19. Конкатенатная разреженная матрица Eigen
- 20. Огромная разреженная матрица в python
- 21. Сокращенная разреженная колонна (CSC) или сжатая разреженная строка (CSR) разреженная матрица?
- 22. разреженная матрица, левая матрица делят на С ++
- 23. Theano element wise maximum
- 24. Multiply SparseVectors element-wise
- 25. Armadillo комплекс разреженная матрица, обратная
- 26. Огромная разреженная матрица - векторное умножение
- 27. R - Логистическая регрессия - разреженная матрица
- 28. Element-wise power of scipy.sparse matrix
- 29. Matlab Element-wise Matrix Multiplication
- 30. Element-wise XOR in pandas
Если вы не можете держать вход в плотном формате, вы не сможете удерживать вывод; выход не будет разреженным, так как e^0 = 1. – user2357112