私は次の配列を持っています:
a = np.arange(12).reshape((2, 2, 3))
そして
b = np.zeros((2, 2))
ここで、bを使用してインデックスi、jのそれぞれでa、stにアクセスしたいのですが、b [i、j] = zの場合、aのz番目の要素を取得します。上記の例の意味は、答えは[[0、3]、[6、9]]である必要があります。これはnp.chooseと非常に関連していると思いますが、それでもどういうわけか完全に管理することはできません。手伝って頂けますか?
2つのアプローチが提案される可能性があります。
explicit
レンジアレイにadvanced-indexing
-
m,n = b.shape
out = a[np.arange(m)[:,None],np.arange(n),b.astype(int)]
np.take_along_axis(a,b.astype(int)[...,None],axis=2)[...,0]
サンプル実行-
In [44]: a
Out[44]:
array([[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]]])
In [45]: b
Out[45]:
array([[0., 0.],
[0., 0.]])
In [46]: m,n = b.shape
In [47]: a[np.arange(m)[:,None],np.arange(n),b.astype(int)]
Out[47]:
array([[0, 3],
[6, 9]])
In [48]: np.take_along_axis(a,b.astype(int)[...,None],axis=2)[...,0]
Out[48]:
array([[0, 3],
[6, 9]])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加