• Register

Kako zamenjati v stolpec v matriki?

+9 votes
317 views
asked Mar 3, 2016 by LovšinU (350 points)

1 Answer

+15 votes
 
Best answer

Jst sm to tako naredila... 

Pač na začetku imaš podano matriko in pol izvedeš to kar je spodaj....

def swap_cols(arr, frm, to):
    arr[:,[frm, to]] = arr[:,[to, frm]]

swap_cols(z, 0, 1) # (ime matrike, stolpec1, stolpec 2)

 

S tem, da to pomen sledeče:

ime[začetek:konec, [stolpec1,stolpec2]] = ime[začetek:konec, [stolpec2,stolpec1]]

answered Mar 3, 2016 by urskamlakar (4,080 points)
selected Mar 3, 2016 by janko.slavic
pač tam, tam kjer piše z, je z ime, ki sem ga dala svoji matriki..
A znate morebiti pojasniti, zakaj dvojni oglati oklepiji?
Preprosto povedano, ker imamo seznam znotraj seznama.... Mogoče se ne znam izražati najboljše...
Gre načeloma za napredno uporabo numpy rezanja/indeksiranja, tako imenovano advanced indexing:
http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#advanced-indexing

Pomembno pri tem je:
Advanced indexing always returns a copy of the data (contrast with basic slicing that returns a view).

Če bi uporabili "navadno" indeksiranje, bi naredili pogled in zato bi morali uporabiti vmesno spremenljivko, če bi hoteli zamenjati stolpca; nekako tako:
frm_data = arr[:,frm].copy()
arr[:, frm] = arr[:, to].copy()
arr[:, to] = frm_data

Dobro  vprašanje torej... :)
Hvala za pojasnilo.
...