2013-07-03 22 views
8

Mam kod Pythona, w którym muszę przekonwertować tablicę 2D na macierz 2D, aby móc ją wykorzystać do obliczenia odwrotności. Do tego używam numpy.matrix (array), ale nie działa. Czy ktoś może powiedzieć, jak przekonwertować tablicę 2D na matrycę numpy? Tablica składa się ze wszystkich liczb zmiennoprzecinkowych:Konwertuj dwuwymiarową tablicę numerowaną na dwuwymiarową macierz numeryczną

+1

Odwrotność [NumPy matrycy do matrycy] (http://stackoverflow.com/questions/3337301/numpy-matrix-to-array) –

+2

można może również wywołać 'np.linalg.inv' bezpośrednio na tablicy. –

Odpowiedz

18

Jeśli macierz a to macierz, to np.asmatrix(a) jest macierzą.

+0

błąd pliku "C: \ xampp \ htdocs \ webdev \ 123.py", linia 47, w druku AI pliku "C: \ Python27 \ lib \ site-packages \ numpy \ matrixlib \ defmatrix.py" linia 859, w getI asmatrix powrotu (func (self)) Plik "C: \ Python27 \ lib \ site-packages \ numpy \ linalg \ linalg.py", wiersz 1574, w pinv u, s, vt = svd (a, 0) Plik "C: \ Python27 \ lib \ site-packages \ numpy \ linalg \ linalg.py", wiersz 1278, na svd a = _fastCopyAndTranspose (t, a) Plik "C: \ Python27 \ lib \ site-packages \ numpy \ linalg \ linalg.py ", linia 145, w _fastCopyAndTranspose cast_arrays = cast_arrays + (_fastCT (a.astype (type)) ValueError: ustawianie elementu tablicy z sekwencją ence. – abcdxx

+6

@abcdxx Chodź, nie możesz po prostu zbombardować mnie mnóstwem komunikatów o błędach, zwłaszcza nie bez kontekstu. _Co to daje ten błąd, jakie parametry przekazałeś do której funkcji itd.? –

+0

I hv na liście 2D przekonwertowałem ją do tablicy używając np.array, a następnie dalej obliczono odwrotność z macierzy używając AI, gdzie A = np.asmatrix (tablica), ale dało powyższy błąd – abcdxx

1

Jeśli masz listę list (jak wspomniano), musisz ją najpierw przekonwertować na tablicę numpy; patrz how to convert 2d list to 2d numpy array?

Krótki przykład jest podany tutaj:

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) 
Powiązane problemy