【发布时间】:2019-12-06 05:01:35
【问题描述】:
我有一个 4 维数组(命名为颜色),它为每个 3d 点 (x, y, z) -> (r, g, b) 分配颜色(即 3 个值 R、G、B) 我有另一个二维数组(命名为可见),它告诉我当我俯视它时我可以看到哪个 z 窗格 (x, y)->z 我想创建 3 维数组(视图),它告诉我我看到了什么。 (x, y) -> (r, g, b)
如何使用 numpy 智能索引来做到这一点?
我试过了
colors=np.array([
[
[[0, 0, 0], [1, 0, 0]],
[[0, 1, 0], [0, 0, 1]]],
[
[[1, 0, 1], [1, 1, 0]],
[[0, 1, 1], [1, 1, 1]]]])
visible=np.array(
[[0, 1],
[1, 0]])
view=colors[:, :,visible[:, :]]
expected=np.array(
[[[0, 0, 0], [1, 1, 0]],
[[0, 1, 1], [0, 0, 1]]])
但这给了我 5 维数组。
【问题讨论】:
-
您能否更好地解释一下您想要实现的目标,不清楚为什么
0变成[0, 0, 0]。 -
你的
expected的最后一个元素不是错误的吗? -
@John Zwick:你是对的。我在问题中更正了预期
-
@RaySteam:因为colors[0, 0, visible[0, 0]]是[0, 0, 0]
-
@JohnZwinck 抱歉,Zwick 是一个不常见的德国名字(甚至有一家测量仪器公司就是这个名字)(我是德国人)。