Python NumPy:如果一列';s值不匹配
我有两个NumPy阵列:Python NumPy:如果一列';s值不匹配,python,arrays,numpy,Python,Arrays,Numpy,我有两个NumPy阵列: a1 = array([[ 262.99182129, 213. , 1. ], [ 311.98925781, 271.99050903, 2. ], [ 383. , 342. , 3. ], [ 372.16494751, 348.83505249, 4. ], [ 214.55
a1 =
array([[ 262.99182129, 213. , 1. ],
[ 311.98925781, 271.99050903, 2. ],
[ 383. , 342. , 3. ],
[ 372.16494751, 348.83505249, 4. ],
[ 214.55493164, 137.01008606, 5. ],
[ 138.29714966, 199.75 , 6. ],
[ 289.75 , 220.75 , 7. ],
[ 239. , 279. , 8. ],
[ 130.75 , 348.25 , 9. ]])
a2 =
array([[ 265.78259277, 212.99705505, 1. ],
[ 384.23312378, 340.99707031, 3. ],
[ 373.66967773, 347.96688843, 4. ],
[ 217.91461182, 137.2791748 , 5. ],
[ 141.35340881, 199.38366699, 6. ],
[ 292.24401855, 220.83808899, 7. ],
[ 241.53366089, 278.56951904, 8. ],
[ 133.26490784, 347.14279175, 9. ]])
实际上会有数千行
但是正如您所看到的,a2
中的第三列没有值2.0
我只想从a1
中删除在a2
的任何一行中都找不到第三列值的行
快速执行此操作的基本方法/快捷方式是什么?一个选项用于检查a1
第2列中的每个值是否位于a2
第2列中,并使用生成的布尔数组对a1
的行进行索引
您可以按如下方式执行此操作:
>>> a1[np.in1d(a1[:, 2], a2[:, 2])]
array([[ 262.99182129, 213. , 1. ],
[ 383. , 342. , 3. ],
[ 372.16494751, 348.83505249, 4. ],
[ 214.55493164, 137.01008606, 5. ],
[ 138.29714966, 199.75 , 6. ],
[ 289.75 , 220.75 , 7. ],
[ 239. , 279. , 8. ],
[ 130.75 , 348.25 , 9. ]])
根据需要,a1
中第三列中带有2
的行不在此数组中