Вот метод, который будет работать с разреженными матрицами (который из ваших комментариев является тем, что вы хотите), который использует функцию leastsq из пакета оптимизации
from numpy import *
from scipy.sparse import csr_matrix
from scipy.optimize import leastsq
from numpy.random import rand
A=csr_matrix([[0.,1.],[0.,1.],[1.,0.]])
b=array([[2.],[2.],[1.]])
def myfunc(x):
x.shape = (2,1)
return (A*x - b)[:,0]
print leastsq(myfunc,rand(2))[0]
генерирует
[ 1. 2.]
Это немного уродливо из-за того, что я должен был подбирать формы, чтобы соответствовать тому, что хотел наименьший. Может быть, кто-то еще знает, как сделать это немного более аккуратным.
Я также пытался заставить что-то работать с функциями в scipy.sparse.linalg с помощью LinearOperators, но безрезультатно. Проблема в том, что все эти функции предназначены только для обработки квадратных функций. Если кто-нибудь найдет способ сделать это таким образом, я бы тоже хотел знать.