Seite 1 von 1

Array befüllen

Verfasst: Donnerstag 8. November 2018, 19:37
von schuesra
Hallo,

ich möchte gerne das Array "c" anhand des Arrays "D_tj_RLP" befüllen.

Code: Alles auswählen

D_tj_RLP = np.zeros((2,3,4))

c = np.array([ [2, 1],
               [1, 0],
               [1, 3] ])
Dabei soll nach folgender Logik vorgegangen werden:

Code: Alles auswählen

D_tj_RLP[0] = [[0,0,1,0],
               [0,1,0,0],
               [0,1,0,0] ]

D_tj_RLP[1] = [[0,1,0,0],
               [1,0,0,0],
               [0,0,0,1] ]
Kann mir da jemand bitte weiterhelfen?

Re: Array befüllen

Verfasst: Donnerstag 8. November 2018, 20:01
von ThomasL

Code: Alles auswählen

c = np.concatenate([D_tj_RLP[0].argmax(axis=1).reshape(3,1), D_tj_RLP[1].argmax(axis=1).reshape(3,1)], axis=1)

Code: Alles auswählen

array([[2, 1],
       [1, 0],
       [1, 3]], dtype=int64)

Re: Array befüllen

Verfasst: Donnerstag 8. November 2018, 21:37
von schuesra
@ThomasL: Oh, tut mir Leid, ich meinte wie ich das Array "D_tj_RLP" mit "c" in der Logik von oben befüllen kann, also genau umgekehrt...

Re: Array befüllen

Verfasst: Donnerstag 8. November 2018, 21:50
von Sirius3
@ThomasL: das was Du machst, geht auch einfach

Code: Alles auswählen

>>> D_tj_RLP.argmax(axis=2).T
array([[2, 1],
       [1, 0],
       [1, 3]])
Umgekehrt muß man nur die anderen Indizes erzeugen:

Code: Alles auswählen

D_tj_RLP[np.arange(D_tj_RLP.shape[0])[:,None],range(D_tj_RLP.shape[1]),c.T] = 1

Re: Array befüllen

Verfasst: Donnerstag 8. November 2018, 21:57
von schuesra
@Sirius3: Super danke! Das hat mir sehr für mein Problem geholfen :)