如何根据条件删除 3d 数组中的中央列?
How do I drop the a central column in a 3d array based on a condition?
给定一个 3d 数组:
a = np.array(
[[[-1., 0., 0., 1., -1., 0., 0., 1., -1., 1., 0., 0., -1., 1.],
[0., 0., 0., 1., -1., 0., 0., 1., -1., -1., 0., 1., 0., 0.],
[0., 0., 0., 1., -1., 0., 0., 0., -1., 1., 7., 0., 0., 0.],
[0., 0., 0., 1., -1., 0., 0., 0., 0., -1., 8., 0., 0., 0.],
[0., 0., 0., 0., -1., 0., 0., 0., 0., 1., 3., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 4., 0., 0., 0.]],
[[1., 0., -1., 0., -1., 1., -1., 0., 0., 1., 0., 0., -1., 1.],
[1., 0., -1., 0., 0., 1., -1., 0., 0., -1., 4., 1., 0., 0.],
[0., 0., -1., 0., 0., 1., -1., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., -1., 0., 0., -1., 2., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., -1., 0., 0., 1., 5., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 6., 0., 0., 0.]],
[[0., -1., 1., 0., -1., 1., 0., -1., 0., 1., 0., 0., -1., 1.],
[0., -1., 1., 0., 0., 1., 0., -1., 0., -1., 4., 1., 0., 0.],
[0., -1., 0., 0., 0., 1., 0., -1., 0., 1., 2., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., -1., 0., -1., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., -1., 0., 1., 5., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 7., 0., 0., 0.]]])
我要去掉第9个"column"不是-1的地方
结果将如下所示:
a = np.array(
[[[0., 0., 0., 1., -1., 0., 0., 1., -1., -1., 0., 1., 0., 0.],
[0., 0., 0., 1., -1., 0., 0., 0., 0., -1., 8., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 4., 0., 0., 0.]],
[[1., 0., -1., 0., 0., 1., -1., 0., 0., -1., 4., 1., 0., 0.],
[0., 0., 0., 0., 0., 1., -1., 0., 0., -1., 2., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 6., 0., 0., 0.]],
[[0., -1., 1., 0., 0., 1., 0., -1., 0., -1., 4., 1., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., -1., 0., -1., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 7., 0., 0., 0.]]])
context: 这些是 3 个井字游戏的历史。维度是这样的:
a.shape = (局数,历史状态,状态属性)
所以我想收集玩家-1 回合的所有游戏。
我使用了你的切片建议
player = a[:,:,9]
wanted != 1
wanted = wanted[:3] #three games
games = np.array(np.array_split(a[wanted],3))
print(games)
[[[ 0. 0. 0. 1. -1. 0. 0. 1. -1. -1. 0. 1. 0. 0.]
[ 0. 0. 0. 1. -1. 0. 0. 0. 0. -1. 8. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. -1. 4. 0. 0. 0.]]
[[ 1. 0. -1. 0. 0. 1. -1. 0. 0. -1. 4. 1. 0. 0.]
[ 0. 0. 0. 0. 0. 1. -1. 0. 0. -1. 2. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. -1. 6. 0. 0. 0.]]
[[ 0. -1. 1. 0. 0. 1. 0. -1. 0. -1. 4. 1. 0. 0.]
[ 0. 0. 0. 0. 0. 1. 0. -1. 0. -1. 1. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. -1. 7. 0. 0. 0.]]]
给定一个 3d 数组:
a = np.array(
[[[-1., 0., 0., 1., -1., 0., 0., 1., -1., 1., 0., 0., -1., 1.],
[0., 0., 0., 1., -1., 0., 0., 1., -1., -1., 0., 1., 0., 0.],
[0., 0., 0., 1., -1., 0., 0., 0., -1., 1., 7., 0., 0., 0.],
[0., 0., 0., 1., -1., 0., 0., 0., 0., -1., 8., 0., 0., 0.],
[0., 0., 0., 0., -1., 0., 0., 0., 0., 1., 3., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 4., 0., 0., 0.]],
[[1., 0., -1., 0., -1., 1., -1., 0., 0., 1., 0., 0., -1., 1.],
[1., 0., -1., 0., 0., 1., -1., 0., 0., -1., 4., 1., 0., 0.],
[0., 0., -1., 0., 0., 1., -1., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., -1., 0., 0., -1., 2., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., -1., 0., 0., 1., 5., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 6., 0., 0., 0.]],
[[0., -1., 1., 0., -1., 1., 0., -1., 0., 1., 0., 0., -1., 1.],
[0., -1., 1., 0., 0., 1., 0., -1., 0., -1., 4., 1., 0., 0.],
[0., -1., 0., 0., 0., 1., 0., -1., 0., 1., 2., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., -1., 0., -1., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., -1., 0., 1., 5., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 7., 0., 0., 0.]]])
我要去掉第9个"column"不是-1的地方 结果将如下所示:
a = np.array(
[[[0., 0., 0., 1., -1., 0., 0., 1., -1., -1., 0., 1., 0., 0.],
[0., 0., 0., 1., -1., 0., 0., 0., 0., -1., 8., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 4., 0., 0., 0.]],
[[1., 0., -1., 0., 0., 1., -1., 0., 0., -1., 4., 1., 0., 0.],
[0., 0., 0., 0., 0., 1., -1., 0., 0., -1., 2., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 6., 0., 0., 0.]],
[[0., -1., 1., 0., 0., 1., 0., -1., 0., -1., 4., 1., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., -1., 0., -1., 1., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., -1., 7., 0., 0., 0.]]])
context: 这些是 3 个井字游戏的历史。维度是这样的:
a.shape = (局数,历史状态,状态属性)
所以我想收集玩家-1 回合的所有游戏。
我使用了你的切片建议
player = a[:,:,9]
wanted != 1
wanted = wanted[:3] #three games
games = np.array(np.array_split(a[wanted],3))
print(games)
[[[ 0. 0. 0. 1. -1. 0. 0. 1. -1. -1. 0. 1. 0. 0.]
[ 0. 0. 0. 1. -1. 0. 0. 0. 0. -1. 8. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. -1. 4. 0. 0. 0.]]
[[ 1. 0. -1. 0. 0. 1. -1. 0. 0. -1. 4. 1. 0. 0.]
[ 0. 0. 0. 0. 0. 1. -1. 0. 0. -1. 2. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. -1. 6. 0. 0. 0.]]
[[ 0. -1. 1. 0. 0. 1. 0. -1. 0. -1. 4. 1. 0. 0.]
[ 0. 0. 0. 0. 0. 1. 0. -1. 0. -1. 1. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. -1. 7. 0. 0. 0.]]]