Numpy для решения массивов

DSNWU спросил: 13 июня 2018 в 10:48 в: python

Использование numpy.linalg.solve для решения уравнения линейной алгебры, но получение _assertNdSquareness и последние 2 измерения массива должны быть квадратными ошибками:

Any Мне очень понравился мой код:

c = array([[1, 1, 1], [.07, .08, .09]])
d = array([24000, 1870])
z = linalg.solve(c, d)
print(z)

1 ответ

Есть решение
David ответил: 13 июня 2018 в 12:11

Вы не можете использовать numpy.linalg.solve для неквадратных матриц, как указано в документации, a must be square and of full-rank, i.e., all rows (or, equivalently, columns) must be linearly independent. Ваша матрица не является квадратной, но в документации также упоминается это, if either is not true, use lstsq for the least-squares best "solution" of the system/equation.

Ниже приведен пример этого и должен работать для вас;

c = array([[1, 1, 1], [.07, .08, .09]])
d = array([24000, 1870])
z = linalg.lstsq(c, d)[0]
print(z)# compare d and c*z to be sure
print(numpy.allclose(d,numpy.dot(c,z))) # should be true