我有一个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
相同的结果
然后我想把它扩展到任何维度游戏板,但如果我知道如何做到这一点,我可能会解决它:)
答案 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()]