假设我有一个大小为nxmxk的numpy数组A和另一个大小为nxm且索引从1到k的数组B. 我想使用B中这个地方给出的索引访问A的每个nxm切片,给我一个大小为nx m的数组.
编辑:这显然不是我想要的![[我可以这样使用take
:
A.take(B)
]]结束编辑
这可以通过花式索引来实现吗?我原以为A[B]
会给出相同的结果,但是会产生一个大小为nxmxmxk的数组(我真的不明白).
我不想使用的原因take
是我希望能够分配这个部分,比如
A[B] = 1
到目前为止,唯一可行的解决方案是
A.reshape(-1, k)[np.arange(n * m), B.ravel()].reshape(n, m)
但肯定有一个更简单的方法吗?
我有一个3D数组,我需要在最后一个轴上"挤"它,这样我得到一个2D数组.我需要以下面的方式做到这一点.对于前两个维度的索引的每个值,我知道应从中获取值的第三维的索引值.
例如,我知道,如果i1 == 2
和i2 == 7
再i3 == 11
.这意味着out[2,7] = inp[2,7,11]
.从前两个维度到第三个维度的映射在另一个2D阵列中给出.换句话说,我有一个数组,其中2,7
我的位置11
作为一个值.
所以,我的问题是如何组合这两个数组(3D和2D)来获得输出数组(2D).