【发布时间】:2018-06-14 15:07:19
【问题描述】:
我正在尝试对以下代码进行矢量化 -
for i in range(imL.shape[0]):
for j in range(imL.shape[1]):
if j - disp[i][j] >= 0:
imR[i, j - disp[i][j], :] = imL[i, j, :]
基本上,我想这样做 -
A[i, j - B[i, j], k] = C[i, j, k] for all (i, j, k)
我研究了布尔索引并想出了这个 -
tmp = np.arange(imR.shape[1])
tmp = np.repeat(tmp[np.newaxis, :], imR.shape[0], axis=0)
tmp = np.repeat(tmp[:, :, np.newaxis], imR.shape[2], axis=2)
imR[(tmp - disp) >= 0] = imL
但是,这会引发错误 -
TypeError: NumPy boolean array indexing assignment requires a 0 or 1-dimensional input, input has 3 dimensions
我相信整数索引是解决方案,但是,我无法提出任何建议。有没有办法有效地对其进行矢量化?
注意:imL 和 imR 是 N x M x 3 ndarrays。 disp 是一个 N x M ndarray。
【问题讨论】:
标签: numpy vectorization numpy-ndarray