С только scipy.sparse
ваш пример кода работает:
In [246]: x=sparse.csr_matrix(np.eye(10))
In [247]: x[0,3]=int(4)
/usr/local/lib/python3.6/dist-packages/scipy/sparse/_index.py:69: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil_matrix is more efficient.
self._set_intXint(row, col, x.flat[0])
In [248]: x
Out[248]:
<10x10 sparse matrix of type '<class 'numpy.float64'>'
with 11 stored elements in Compressed Sparse Row format>
In [249]: x.A
Out[249]:
array([[1., 0., 0., 4., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]])
Но traceback
~/anaconda2/envs/macrophage/lib/python3.6/site-packages/anndata/h5py/h5sparse.py in _set_many(self, i, j, x)
ссылается на другой пакет, https://anndata.readthedocs.io/en/stable/,, который имеет h5py/h5sparse
модуль.В некотором смысле это изменяет поведение стандартной матрицы sparse
.
Стандарт _set_many
(в scipy.sparse.compressed.py
) сначала превращает x
в массив np.array(x...)
и использует nsample = x.size
.
В сумме:
- вы не сообщили нам о пакете
anndata
- «ошибка» в этом пакете или вашиспользовать его.