¿Cómo cambiar elementos en una matriz dispersa en SciPy de Python?

He construido un pequeño código que quiero usar para resolver problemas de valores propios que involucran grandes matrices dispersas. Está funcionando bien, todo lo que quiero hacer ahora es establecer algunos elementos en la matriz dispersa en cero, es decir, los que están en la fila superior (que corresponde a la implementación de condiciones de límite). Solo puedo ajustar los vectores de columna (C0, C1 y C2) a continuación para lograrlo. Sin embargo, me preguntaba si hay una forma más directa. Evidentemente, la indexación NumPy no funciona con el paquete disperso de SciPy.

import scipy.sparse as sp
import scipy.sparse.linalg  as la
import numpy as np
import matplotlib.pyplot as plt

#discretize x-axis
N = 11
x = np.linspace(-5,5,N)
print(x)
V = x * x / 2
h = len(x)/(N)
hi2 = 1./(h**2)
#discretize Schroedinger Equation, i.e. build 
#banded matrix from difference equation
C0 = np.ones(N)*30. + V
C1 = np.ones(N) * -16.
C2 = np.ones(N) * 1.
diagonals = np.array([-2,-1,0,1,2])
H = sp.spdiags([C2, C1, C0,C1,C2],[-2,-1,0,1,2], N, N)
H *= hi2 * (- 1./12.) * (- 1. / 2.)
#solve for eigenvalues
EV = la.eigsh(H,return_eigenvectors = False)

#check structure of H
plt.figure()
plt.spy(H)
plt.show()

Esta es una visualización de la matriz que se construye con el código anterior. Quiero que establezca los elementos en la primera fila cero.

Respuestas a la pregunta(1)

Su respuesta a la pregunta