Я столкнулся с различием в том, как разрезание скудной разреженной матрицы работает в 0.10.0 и 0.10.1. Рассмотрим следующий фрагмент кода:Нарезка скудной разреженной матрицы с использованием булевой маски
from numpy import array, ravel
from scipy.sparse import csr_matrix
mat = csr_matrix(array([[1, 0, 0], [0,1,0], [1,0,0]]))
desired_cols = ravel(mat.sum(0)) > 0
print mat[:, desired_cols].A
В SciPy 0.10.0, я получаю то, что я ожидаю, чтобы получить:
[[1 0]
[0 1]
[1 0]]
В 0.10.1 и 0.12.0, я получаю
[[0 0 1]
[1 1 0]
[0 0 1]]
Я не уверен, что это ошибка, или я делаю что-то неправильно. Я получаю те же результаты, используя coo_matrix
и csc_matrix
.
Я пытаюсь удалить все строки, сумма которых равна 0 из матрицы. Я понимаю, что csr_matrix
не поддерживает эффективное разделение столбцов, и я не должен быть этим.
Что такое 'wish_cols' в этих случаях. В последнем scipy (0.13.0) результаты соответствуют вашему первому (0.10.0). Вам, возможно, придется копаться в источнике github для scipy, если вы хотите отследить изменения еще в версиях. – hpaulj