python - 从 numpy 数组中删除数字

标签 python arrays numpy vectorization

假设我有一个 numpy 数字数组(例如:整数)。我想在序列中出现的任何地方删除数字 k。目前我正在为此编写一个 for 循环,这似乎有点矫枉过正。有直接的方法吗?一般来说,如果我有一个多于一个的号码要删除怎么办。

最佳答案

假设 A 为输入数组,B 为包含要删除的数字的数组,您可以使用 np.in1d获取 AB 的匹配掩码,然后使用掩码的倒置版本映射 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/

相关文章:

javascript - VueJS、Vuex、Getter 显示为空数组,但 console.log 显示它是一个包含所有值的对象

python - DSP : audio processing : squart or log to leverage fft?

python - numpy 将排序的数组合并到一个新数组?

python - Django加载本地json文件

python - 如何运行wxGlade生成的代码

python - 在 OpenCV 中绘制有角度的矩形

python - 找到位于球形区域内的所有点

java - 无法调用资源(特别是字符串数组) - java/android

javascript - 如何将字符串转换为数组?

python - 将看似相同的数组写入两个图像文件会导致不同的结果