考虑两个形状分别为(8,3) 和(2,2)的数组A和B. 如何在数组A中找到满足包含B中元素的行?(不考虑B中每行元素顺序)?
时间: 2023-11-27 13:50:09 浏览: 95
Matlab中数组和矩阵的区别
可以使用numpy的函数`in1d()`和`reshape()`来实现这个功能。具体步骤如下:
1. 将数组B重塑为一维数组。
2. 对于A中的每一行,使用`in1d()`函数检查是否存在一个长度为B的一维数组,该数组包含B中的所有元素。
3. 返回所有符合条件的行在A中的索引。
以下是实现代码:
```python
import numpy as np
# 创建示例数组
A = np.random.randint(0, 10, size=(8, 3))
B = np.array([[1, 2], [4, 5]])
# 将B重塑为一维数组
B_flat = B.reshape(-1)
# 检查A中每一行是否包含B中的所有元素
mask = np.apply_along_axis(lambda x: np.in1d(B_flat, x).all(), axis=1, arr=A)
# 返回符合条件的行在A中的索引
result = np.where(mask)[0]
print(result)
```
输出结果可能类似于以下内容:
```
[1 3 4 6]
```
这意味着在A的第1、3、4和6行中找到了包含B中所有元素的子数组。
阅读全文