这似乎是Get indices of intersecting rows of Numpy 2d Array的伪装,但我在解决方案时遇到了一些麻烦。
下面的代码(来自链接的问题)有效:
A=np.asarray([[0., -23.75, -100., 8.75],
[0., -23.75, -100., 7.75],
[0., -23.25, -100., 9.25],
[0., -23.25, -100., 8.75],
[0., -23.25, -100., 7.25],
[0., -23.25, -100., 6.75],
[0., -23.25, -100., 6.25]])
B=np.asarray([[0., -23.25, -100., 8.25],
[0., -23.25, -100., 7.75],
[0., -23.25, -100., 7.25],
[0., -23.25, -100., 6.25]])
dt = np.dtype((np.void, A.dtype.itemsize * A.shape[1]))
np.nonzero(np.in1d(A.view(dt).reshape(-1), B.view(dt).reshape(-1)))[0]
输出符合预期(A中与B中相同子数组相对应的子数组的索引):
array([4, 6])
但是,当我将A扩展为较大的2D形状为C(25257,4)的2D数组C时却遇到了麻烦,但是我输入的数据类型与A相同。当我输入“ C.view(dt)”时,我得到以下信息错误消息:ValueError:更改为较大的dtype时,其大小必须是数组最后一个轴的总大小(以字节为单位)的除数。
任何想法为何扩展2D数组都会导致此特定错误消息?谢谢!