给出了两个二维numpy数组(arr_all和arr_sub),而第二个数组是第一个数组的随机子集。我需要根据两个数组中存在的一列中的id获取第一列(arr_all)中未包含在第二列(arr_sub)中的行。例如。:
arr_all = array([[ x, y, z, id_1],
# [x, y, z, id_2],
# [x, y, z, id_3],
# [x, y, z, id_4],
# [x, y, z, id_5]])
arr_sub = array([[ x, y, z, id_1],
# [x, y, z, id_2],
# [x, y, z, id_5]])
想要的输出:
arr_remain = array([[ x, y, z, id_3],
# [x, y, z, id_4]])
一个有效的解决办法是:
list_remain = []
for i in range(len(ds_all)):
if ds_all[i][3] not in ds_trees[:,3]:
list_remain.append(ds_all[i])
arr_remain = np.array(list_remain)
然而不幸的是,这个解决方案只适用于小数据集,因为它的运行速度非常慢。由于我的原始数据集包含超过2600万行,这是不够的。
我尝试采用这样、这样或这样的解决方案,但我没有设法在“其他数组”列中添加id是否存在的检查。
1条答案
按热度按时间shyt4zoc1#
这里有一个方法:
输出: