让我们说我有一个数字的数组(例如:整数)。我想在序列中发生的任何地方都删除数字k
。目前我正在为此写一个for循环,这似乎是一个矫枉过正的问题。有没有一个简单的方法来做到这一点?一般来说,如果我有一个以上的号码被丢弃,该怎么办?从numpy数组中删除数字
3
A
回答
5
假设A
到输入阵列和B
为要除去含有的数字阵列,可以使用np.in1d
得到的B
匹配的掩模在A
,然后使用掩模的反相版本映射A
和获得所需的输出。下面是执行会是什么样子 -
A[~np.in1d(A,B).reshape(A.shape)]
采样运行 -
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])
对于二维输入数组的情况下,你会得到一维数组作为输出,就像这样 -
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])
3
如果您尝试检查单个标量值。在numpy中,当您将向量与标量值进行比较时,会返回一个数组True/False
值,其中每个元素指示标量值与元素的比较结果。示例 -
In [15]: a = np.random.randint(10,100, (100,))
In [16]: a
Out[16]:
array([63, 19, 84, 89, 89, 76, 18, 16, 57, 65, 25, 31, 17, 20, 25, 14, 27,
70, 79, 87, 82, 59, 50, 86, 20, 42, 81, 58, 32, 23, 68, 12, 19, 98,
11, 90, 76, 55, 40, 66, 83, 64, 46, 65, 94, 64, 91, 89, 18, 44, 59,
52, 51, 22, 32, 94, 88, 38, 31, 91, 47, 76, 62, 43, 89, 41, 76, 81,
50, 53, 76, 97, 49, 91, 39, 81, 52, 94, 21, 77, 94, 96, 28, 57, 38,
10, 55, 57, 55, 41, 15, 14, 91, 69, 80, 43, 83, 31, 21, 76])
In [17]: a != 15
Out[17]:
array([ True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True,
False, True, True, True, True, True, True, True, True, True], dtype=bool)
然后你就可以使用这个bool
阵列,索引你的原数组,这将返回值放回原处索引阵列具有True
,这是Boolean array indexing
一部分。示例 -
In [18]: a[a != 15]
Out[18]:
array([63, 19, 84, 89, 89, 76, 18, 16, 57, 65, 25, 31, 17, 20, 25, 14, 27,
70, 79, 87, 82, 59, 50, 86, 20, 42, 81, 58, 32, 23, 68, 12, 19, 98,
11, 90, 76, 55, 40, 66, 83, 64, 46, 65, 94, 64, 91, 89, 18, 44, 59,
52, 51, 22, 32, 94, 88, 38, 31, 91, 47, 76, 62, 43, 89, 41, 76, 81,
50, 53, 76, 97, 49, 91, 39, 81, 52, 94, 21, 77, 94, 96, 28, 57, 38,
10, 55, 57, 55, 41, 14, 91, 69, 80, 43, 83, 31, 21, 76])
相关问题
- 1. 如何从numpy数组列表中删除一个numpy数组?
- 2. 从NumPy数组中删除值对
- 3. Python - 从numpy数组中删除一行?
- 4. 从numpy的3d数组中删除2d子数组
- 5. 从数组中永远删除数字
- 6. 迭代删除numpy数组中的行
- 7. 在Numpy数组中删除NaN和Infs
- 8. 在3D numpy数组中删除行
- 9. Python在numpy数组中删除行
- 10. 按数值从numpy数组中删除元素
- 11. 从numpy结构数组中删除列(数组中的元组列表)?
- 12. 从具有字符串值和数值的numpy数组中删除NaN
- 13. 如何删除numpy数组中所有numpy数组中的第n个元素?
- 14. 从Python中的Numpy数组中删除零
- 15. 从PHP数组中删除字符串?
- 16. 从字符数组中删除条目
- 17. 从字节数组中删除范围
- 18. 从数组中删除字符串项
- 19. 从字典数组中删除值
- 20. Lodash从字符串数组中删除
- 21. 从数组中删除字符串
- 22. 如何从数组中删除字符
- 23. 使用指针从字符数组[]中删除/删除字符
- 24. 在numpy数组的末尾删除dtype
- 25. 为numpy数组删除一列
- 26. numpy删除数组值(逻辑零)
- 27. 从数组中删除数组项目
- 28. 如何从数组中删除数组?
- 29. 数组函数从数组中删除第一个字符
- 30. 如何从结构化numpy数组中删除列?
难道你不能简单地使用'a [a!=]'? –
是的,我可以做到这一点。它确保订单得到保留吗? – dineshdileep
是的,它应该以相同的顺序返回元素。 –