python利用np.intersect1d如何找出两个数组公共的元素?
时间: 2024-05-05 21:19:02 浏览: 17
可以使用以下代码找出两个数组公共的元素:
```python
import numpy as np
array1 = np.array([1, 2, 3, 4, 5])
array2 = np.array([3, 4, 5, 6, 7])
result = np.intersect1d(array1, array2)
print(result)
```
输出结果为:
```
[3 4 5]
```
其中`result`为两个数组公共元素的一维数组。
相关问题
np.intersect1d
`np.intersect1d`是NumPy库中的函数,用于计算两个数组的交集(即共同元素)。该函数返回一个按升序排列的数组,其中只包含输入数组中共同存在的元素。示例如下:
```python
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([3, 4, 5, 6, 7])
intersect_arr = np.intersect1d(arr1, arr2)
print(intersect_arr) # [3 4 5]
```
在上面的示例中,`arr1`和`arr2`的交集是`[3, 4, 5]`,因此`np.intersect1d`返回一个包含这些共同元素的数组。
np.intersect1d用法示例
`np.intersect1d()` 函数是用于返回两个数组中共同存在的元素,它的使用方法如下:
```python
numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)
```
其中,`ar1` 和 `ar2` 分别是两个需要求交集的数组,`assume_unique` 表示输入的数组是否已经是唯一的,`return_indices` 表示是否返回交集元素在两个数组中的位置。
下面是一些示例:
```python
import numpy as np
# 一维数组求交集
a = np.array([1, 2, 3, 4])
b = np.array([2, 3, 4, 5])
print(np.intersect1d(a, b)) # 输出 [2 3 4]
# 二维数组求交集
c = np.array([[1, 2, 3], [4, 5, 6]])
d = np.array([[2, 3, 4], [1, 2, 3]])
print(np.intersect1d(c, d)) # 输出 [1 2 3 4]
# 指定返回交集元素在两个数组中的位置
a = np.array([1, 2, 3, 4])
b = np.array([2, 3, 4, 5])
print(np.intersect1d(a, b, return_indices=True)) # 输出 (array([2, 3, 4]), array([1, 2, 3]), array([0, 1, 2]))
# 假设数组已经是唯一的,提高求交集的效率
a = np.array([1, 2, 3, 4])
b = np.array([2, 3, 4, 5])
print(np.intersect1d(a, b, assume_unique=True)) # 输出 [2 3 4]
```
在上面的示例中,`np.intersect1d()` 函数返回的是两个数组中共同存在的元素。比如,数组 `[1, 2, 3, 4]` 和数组 `[2, 3, 4, 5]` 的交集是 `[2, 3, 4]`,则 `np.intersect1d([1, 2, 3, 4], [2, 3, 4, 5])` 的输出是 `array([2, 3, 4])`,表示两个数组中共同存在的元素是 2、3 和 4。