Вот питон SSCCE:Python пустой csr_matrix бросает ValueError: не может вывести размеры от нулевого размера индексных массивов
import scipy.sparse
data = []
row = []
col = []
csr = scipy.sparse.csr_matrix((data, (row, col))) #error happens here
print(type(csr))
print(csr)
Я бегу это с python2.7 я получаю сообщение об ошибке:
raise ValueError('cannot infer dimensions from zero sized index arrays')
ValueError: cannot infer dimensions from zero sized index arrays
Она работает правильно, когда я кормлю их значения, как это:
csr = scipy.sparse.csr_matrix(([10,20,30], ([0,0,0],[0,1,2])))
или как это:
csr = scipy.sparse.csr_matrix(([10,20], ([0,0],[0,1])))
csr = scipy.sparse.csr_matrix(([10], ([0],[0])))
Я прочитал документацию по адресу: http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html и
http://docs.scipy.org/doc/scipy/reference/sparse.html#usage-information
но это, кажется, не объясняет, почему я не могу сделать Csr матрицу с нулевыми элементов в ней.
Что происходит с этой ошибкой? Я предполагаю, что типы scipy.sparse.csr.csr_matrix должны иметь по крайней мере одно значение в них при создании экземпляра? Это кажется глупым ограничением.
Действительно, вероятно, вы должны дать явную форму вместо того, чтобы позволить SciPy угадать, даже если массив не пуст. – user2357112
Вы можете создать пустую csr_matrix следующим образом: 'csr = scipy.sparse.csr_matrix ((0, 0))'. Однако это не будет выводиться из пустого списка. Это вопрос, почему он должен сделать вывод, что что-то пошло не так, как мы хотим, чтобы мы не хотели никаких элементов? Ответ в том, что так оно и есть, справиться с этим. –
Соответствующий код находится в 'coo_matrix .__ init__'. – hpaulj