2013-07-03 2 views
8

У меня есть код python, в котором я должен преобразовать 2D-массив в 2D-матрицу, чтобы я мог использовать его для вычисления обратного. Для этого я использую numpy.matrix (массив), но он не работает. Может ли кто-нибудь сказать, как преобразовать 2D-массив в матрицу numpy? Массив состоит из всех чисел с плавающей точкойпреобразовать 2D-массив numpy в двумерную матрицу numpy

+1

Инверсия [матрицы Numpy на массив] (http://stackoverflow.com/questions/3337301/numpy-matrix-to-array) –

+2

Вы также можно напрямую вызвать 'np.linalg.inv' в массиве. –

ответ

18

Если a - ваш массив, np.asmatrix(a) - это матрица.

+0

ошибка файла "C: \ XAMPP \ HTDOCS \ WebDev \ 123.py", строка 47, в печати AI Файл "C: \ python27 \ Lib \ сайта-пакеты \ NumPy \ matrixlib \ defmatrix.py", строка 859, в getI return asmatrix (func (self)) Файл «C: \ Python27 \ lib \ site-packages \ numpy \ linalg \ linalg.py», строка 1574, в pinv u, s, vt = svd (a, 0) Файл «C: \ Python27 \ lib \ site-packages \ numpy \ linalg \ linalg.py», строка 1278, в svd a = _fastCopyAndTranspose (t, a) Файл «C: \ Python27 \ lib \ site-packages \ numpy \ linalg \ linalg.py ", строка 145, в _fastCopyAndTranspose cast_arrays = cast_arrays + (_fastCT (a.astype (type)) ValueError: установка элемента массива с секцией ENCE. – abcdxx

+6

@abcdxx Да ладно, вы не можете просто бомбить меня кучей сообщений об ошибках, особенно не без контекста. _What_ дает вам эту ошибку, какие параметры вы передали какой функции и т. Д.? –

+0

I hv 2D-список Я преобразовал его в массив с помощью np.array, а затем вычислил его обратно из матрицы с использованием AI, где A = np.asmatrix (array), но он дал указанную выше ошибку. – abcdxx

1

Если у вас есть список списков (как вы упомянули), вам необходимо сначала преобразовать его в массив numpy; см how to convert 2d list to 2d numpy array?

Краткий пример приведен здесь:

import numpy as np 
a = [[ 0. +0.j, 1.j, 2. -2.j], 
    [ 4. -4.j, 5. -5.j, 6. -1.j], 
    [ 8. -8.j, 9. -9.j, 10.]] 
b = np.matrix(np.array(a)) 
b_inv = np.linalg.inv(b) 
Смежные вопросы