mar*_*ard 5 python arrays numpy vectorization
我想对这个NumPy操作进行矢量化:
for j in range(yt):
for i in range(xt):
y[j, i] = x[idx[j, i], j, i]
Run Code Online (Sandbox Code Playgroud)
其中idx包含x切片的axis-0索引.有一些简单的方法可以做到这一点吗?
您可以使用:
J, I = np.ogrid[:yt, :xt]
x[idx, J, I]
Run Code Online (Sandbox Code Playgroud)
这是测试:
import numpy as np
yt, xt = 3, 5
x = np.random.rand(10, 6, 7)
y = np.zeros((yt, xt))
idx = np.random.randint(0, 10, (yt, xt))
for j in range(yt):
for i in range(xt):
y[j, i] = x[idx[j, i], j, i]
J, I = np.ogrid[:yt, :xt]
np.all(x[idx, J, I] == y)
Run Code Online (Sandbox Code Playgroud)