16. 从数组a = np.array([1,2,3,2,3,4,3,4,5,6])中删除在数组b = np.array([7,2,10,2,7,4,9,4,9,8])中存在的所有元素
时间: 2023-08-19 09:23:57 浏览: 46
可以使用NumPy中的setdiff1d函数来从一个数组中删除另一个数组中存在的元素。setdiff1d函数返回一个有序唯一值数组,这个数组包含在第一个输入数组中但不在第二个输入数组中出现的所有元素。
以下是使用NumPy的setdiff1d函数来从数组a中删除在数组b中存在的所有元素的代码:
```python
import numpy as np
# 创建数组a和数组b
a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])
# 从a中删除在b中存在的所有元素
result = np.setdiff1d(a, b)
print(result)
```
执行上述代码,输出结果如下:
```
[1 3 5 6]
```
以上就是从数组a中删除在数组b中存在的所有元素的方法。
相关问题
解释indices = np.where(a[:, -1][:, np.newaxis] == np.array(b))[0]
这行代码的作用是在二维数组 `a` 的最后一列中查找与数组 `b` 中元素相等的值,并返回这些值在第一维(行)中的索引。具体解释如下:
1. `a[:, -1]` 表示取数组 `a` 的最后一列,即所有行的最后一个元素,返回一维数组。
2. `a[:, -1][:, np.newaxis]` 表示将上一步得到的一维数组转换为二维数组,其中每个元素都是一行,维度为 (n, 1)。
3. `np.array(b)` 将列表 `b` 转换为 numpy 数组。
4. `a[:, -1][:, np.newaxis] == np.array(b)` 对二维数组的每个元素逐个比较是否与数组 `b` 中的元素相等,返回一个布尔型的二维数组。
5. `np.where(a[:, -1][:, np.newaxis] == np.array(b))` 返回一个元组,包含符合条件的元素的索引。元组中第一个元素是行的索引,第二个元素是列的索引。由于这里只对一列进行比较,所以第二个元素始终为 0。
6. `np.where(a[:, -1][:, np.newaxis] == np.array(b))[0]` 取元组中的第一个元素,即符合条件的行的索引。
3.如何获取数组a = np.array([1,2,3,2,3,4,3,4,5,6])和数组b = np.array([7,2,10,2,7,4,9,4,9,8])之间的共同元素(可参考np.unique()函数)?
你好!关于你的问题,可以使用np.intersect1d()函数获取两个数组之间的共同元素。代码如下:
```python
import numpy as np
a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])
result = np.intersect1d(a, b)
print(result)
```
输出结果为:
```
[2 4]
```
这里我们得到了两个数组之间的共同元素,即2和4。如果想要去重后得到共同元素,可以使用np.unique()函数。代码如下:
```python
import numpy as np
a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])
result = np.intersect1d(np.unique(a), np.unique(b))
print(result)
```
输出结果为:
```
[2 4]
```
这里我们先使用np.unique()函数去重后再使用np.intersect1d()函数获取共同元素。