это фрагмент моего кода. Может кто-нибудь подходящим способом сделать это. Какой-то фантастический NumPy трюк?
q_val = np.random.rand(5,3)
action = np.ones((5,1),int)
to_set = np.ones((5,1),int)
for x in range(5):
q_val[x][action[x]] -= to_set[x]
Вот как я создаю значения
q_val = np.random.rand(5,3) //lets say the middel of randome
q_val = array([[0.93373647, 0. , 0.14962181],//get only zeroes
[0.67909199, 0. , 0.07462584],
[0.05696713, 0. , 0.03221326],
[0.78209394, 0. , 0.58312439],
[0.09217555, 0. , 0.17876316]])
action = np.ones((5,1),int)
action = >>> action
array([[1],
[1],
[1],
[1],
[1]])
to_set = np.ones((5,1),int)
to_set = array([[1],
[1],
[1],
[1],
[1]])
Это то, что я изменю
for x in range(5):
q_val[x][action[x]] -= to_set[x]
Это то, что я буду get
array([[ 0.93373647, -1. , 0.14962181],
[ 0.67909199, -1. , 0.07462584],
[ 0.05696713, -1. , 0.03221326],
[ 0.78209394, -1. , 0.58312439],
[ 0.09217555, -1. , 0.17876316]])
Я уверен, что есть какой-то причудливый способ сделать это в одной из строк. Может кто-нибудь помочь?