Нарезка Python, перемещение старых мест нарезки?
Я ранее получил:
self.memory = np.zeros((MEMORY_CAPACITY, s_dim * 2 + a_dim + 1), dtype=np.float32)
но мне нужно было добавить переменную "сделано" в эту память, поэтому я сделал:
self.memory = np.zeros((MEMORY_CAPACITY, s_dim * 2 + a_dim + 2), dtype=np.float32)
и теперь я добавил переменную "сделано" в памяти с:
def store_transition(self, s, a, r, s_, done):
transition = np.hstack((s, a, [r], s_, done))
index = self.pointer % MEMORY_CAPACITY # replace the old memory with new memory
self.memory[index, :] = transition
так что теперь он добавлен, но мне также нужно вернуть его в другую мою функцию:
indices = np.random.choice(MEMORY_CAPACITY, size=BATCH_SIZE)
bt = self.memory[indices, :]
bs = bt[:, :self.s_dim]
ba = bt[:, self.s_dim: self.s_dim + self.a_dim]
br = bt[:, -self.s_dim - 1: -self.s_dim]
bs_ = bt[:, -self.s_dim:]
bd = bt[:, here should be done]
поэтому bd должен содержать переменную done, я лично думаю о том, что должно быть:
bd = bt[:, -1:]
но я не уверен в этом....
Более того, некоторые старые размещения должны измениться правильно, потому что массив стал больше, но я понятия не имею, что, что и как....
Кто-нибудь, кто может мне помочь?
январь
1 ответ
Не совсем уверен, что ты имеешь в виду в части, кроме того, некоторые старые...
Но синтаксис нарезки кусочков работает. Смотрите этот пример:
>>> x = np.random.randn(5, 6)
>>> x.shape
(5, 6)
>>> x
array([[-0.66028509, -0.03515113, 0.54097151, 1.64021491, 1.55407344,
-1.88961789],
[-0.73310028, -0.38558638, 0.33200719, -0.142615 , 0.57087033,
-0.67726621],
[ 0.32542737, -1.13508259, 1.58907859, 0.94438687, 0.33949198,
1.52579515],
[ 0.59211854, 0.39976888, 0.13617402, 0.57993582, -0.25274804,
-1.15533191],
[ 0.21203948, 0.72443024, -1.74406077, 0.97494208, 0.12653774,
-0.00668887]])
>>> x[:, :-1]
array([[-0.66028509, -0.03515113, 0.54097151, 1.64021491, 1.55407344],
[-0.73310028, -0.38558638, 0.33200719, -0.142615 , 0.57087033],
[ 0.32542737, -1.13508259, 1.58907859, 0.94438687, 0.33949198],
[ 0.59211854, 0.39976888, 0.13617402, 0.57993582, -0.25274804],
[ 0.21203948, 0.72443024, -1.74406077, 0.97494208, 0.12653774]])
>>> x[:, :-1].shape
(5, 5)
>>> x[:, -1:]
array([[-1.88961789],
[-0.67726621],
[ 1.52579515],
[-1.15533191],
[-0.00668887]])
>>> x[:, -1:].shape
(5, 1)