假设我有一个 numpy 数字数组(例如:整数)。我想在序列中出现的任何地方删除数字 k
。目前我正在为此编写一个 for 循环,这似乎有点矫枉过正。有直接的方法吗?一般来说,如果我有一个多于一个的号码要删除怎么办。
最佳答案
假设 A
为输入数组,B
为包含要删除的数字的数组,您可以使用 np.in1d
获取 A
中 B
的匹配掩码,然后使用掩码的倒置版本映射 A
并获得所需的输出。下面是实现的样子 -
A[~np.in1d(A,B).reshape(A.shape)]
sample 运行-
In [14]: A
Out[14]: array([3, 2, 1, 4, 3, 3, 2, 2, 4, 1])
In [15]: B
Out[15]: array([2, 4])
In [16]: A[~np.in1d(A,B).reshape(A.shape)]
Out[16]: array([3, 1, 3, 3, 1])
对于 2D 输入数组的情况,你会得到一个 1D 数组作为输出,就像这样 -
In [21]: A
Out[21]:
array([[3, 3, 3, 4, 0, 4],
[2, 4, 4, 4, 4, 3],
[1, 2, 4, 4, 3, 1],
[0, 3, 1, 4, 1, 1]])
In [22]: B
Out[22]: array([2, 4])
In [23]: A[~np.in1d(A,B).reshape(A.shape)]
Out[23]: array([3, 3, 3, 0, 3, 1, 3, 1, 0, 3, 1, 1, 1])
关于python - 从 numpy 数组中删除数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32817017/