我有两个数组,一个有大量的行,一个有少量的行,都有2列。我试图采取补充的小数组。这样,我删除所有行在较大的数组中,也存在于较小的数组。
我目前正在尝试这样做:
import numpy as np
my_arr = np.array([[0,1], [1,2], [2,3], [3,4], [4,5], [3,2]]) # all values
del_arr = np.array([[0,1], [2,3]]) # delete these from all values
complement_arr = np.delete(my_arr, del_arr, axis=0)
In[670]: complement_arr
Out[670]:
array([[4, 5],
[3, 2]])
可以看出,删除的行比del_arr
中的行多,预期输出为:
array([[1, 2],
[3, 4],
[4, 5],
[3, 2]])
我在这里到底做错了什么,以及如何有效地从更大规模的del_arr
数组中删除行?
1条答案
按热度按时间ao218c7q1#
你可以通过比较
del_arr
中的每个形状(2,)
子数组和my_arr
中的每个形状(2,)
子数组来使用蛮力方法:complement_arr:
但是注意
eq = my_arr[:, None, :] == del_arr[None, :, :]
创建了一个形状为(x, y, 2)
的数组,这可能需要大量的内存。