1 回答

TA贡献1816条经验 获得超6个赞
您可以np.isin用来查找每个数组中第一列中的值出现在另一个数组中第一列中的值。然后,这只是简单的索引编制问题。
c = a[np.isin(a[:,0],b[:,0])]
d = b[np.isin(b[:,0],a[:,0])]
>>> c
array([[ 9.60977000e+00, 9.75000000e+01, 9.60000000e+01,
9.90000000e+01, 1.00500000e+02, 1.60000000e+00],
[ 9.60979000e+00, 9.75000000e+01, 9.60000000e+01,
1.02000000e+02, 1.03500000e+02, 1.10000000e-01],
[ 9.60980000e+00, 9.75000000e+01, 9.60000000e+01,
1.03500000e+02, 1.05000000e+02, 5.00000000e-02],
[ 9.60981000e+00, 9.75000000e+01, 9.60000000e+01,
1.05000000e+02, 1.06500000e+02, 3.00000000e-02],
[ 9.60984000e+00, 9.75000000e+01, 9.60000000e+01,
1.09500000e+02, 1.11000000e+02, 1.00000000e-02]])
>>> d
array([[ 9.60977000e+00, 9.90000000e+01, 1.00500000e+02,
9.75000000e+01, 9.60000000e+01, 1.58000000e+00],
[ 9.60979000e+00, 1.02000000e+02, 1.03500000e+02,
9.75000000e+01, 9.60000000e+01, 1.10000000e-01],
[ 9.60980000e+00, 1.03500000e+02, 1.05000000e+02,
9.75000000e+01, 9.60000000e+01, 5.00000000e-02],
[ 9.60981000e+00, 1.05000000e+02, 1.06500000e+02,
9.75000000e+01, 9.60000000e+01, 3.00000000e-02],
[ 9.60984000e+00, 1.09500000e+02, 1.11000000e+02,
9.75000000e+01, 9.60000000e+01, 1.00000000e-02]])
说明:
>>> np.isin(a[:,0],b[:,0])
array([ True, False, True, True, True, False, True], dtype=bool)
上面的内容基本上只是向您显示的第一列的值a可以在的第一列中找到的位置,b然后可以a使用上面显示的代码通过该布尔数组进行索引:
c = a[np.isin(a[:,0],b[:,0])]
添加回答
举报