在 ' n中动态获取沿1维的向量。维度numpy数组

时间:2017-09-03 10:32:03

标签: python arrays numpy

我有一个numpy变量,可以是' n'尺寸,例如: $user->user_data[0]->sex // Not $user->sex

我想根据向量 game_board = np.zeros((4,3,3), dtype=np.int8) 获取第一维的向量 choose_vector

我知道如何静态地做到这一点:


choose_vector = np.array([x,y],dtype=np.int8)

但到目前为止,我使用game_board[:, x, y] # will return [0,0,0,0], the (x,y)th element from 1st dimension 做的所有事情都没有奏效:

choose_vector

如何构建game_board[:, choose_vector] # returns [[[0 0 0] [0 0 0]] [[0 0 0] [0 0 0]] [[0 0 0] [0 0 0]] [[0 0 0] [0 0 0]]] print(game_board[choose_vector]) # returns [[0,0,0]] 给定game_board的索引,以获得与choose_vector相同的结果

然后我想把它扩展到任何维度游戏板,但如果我知道如何做到这一点,我可能会解决它:)

2 个答案:

答案 0 :(得分:0)

这可能不是最干净的解决方案,但它可以做你想做的事情:

import numpy as np
x,y = 0,0

game_board = np.zeros((4,3,3), dtype=np.int8)
choose_vector = np.array([x, y], dtype=np.uint8)
game_board[[np.newaxis] + choose_vector.tolist()]

诀窍是,你可以"替换"静态方法中的:np.newaxis内有list

答案 1 :(得分:0)

我在FlashTek的帮助下解决了这个问题。而不是使用np.newaxis,使用slice(None)似乎是:的替代

import numpy as np
x,y = 0,0

game_board = np.zeros((4,3,3), dtype=np.int8)
choose_vector = np.array([x, y], dtype=np.uint8)
game_board[[slice(None)] + choose_vector.tolist()]