python - np.where 还检查多维数组中的子元素
问题描述
我有两个具有相同第二维的多维数组。我想确保第一个数组的任何元素(即没有行)也是第二个数组的行。
为此,我正在使用numpy.where
,但它的行为也在检查同一位置的子元素。例如考虑以下代码:
x = np.array([[0,1,2,3], [4,0,6,9]])
z= np.array([[0,1,2,3], [5, 11, 6,98]])
for el in x:
print(np.where(z==el))
它打印:
(array([0, 0, 0, 0]), array([0, 1, 2, 3]))
(array([1]), array([2]))
其中第一个结果是由于第一个数组相等,第二个结果是因为两者都和z[1]
作为第三个元素。有没有办法告诉只返回严格相等元素的索引,即在上面的例子中?x[1]
6
np.where
0
解决方案
[i for i, e in enumerate(x) if (e == z).all(1).any()]
测试用例:
x = np.array([[0,1,2,3], [4,0,6,9], [4,0,6,19]])
z= np.array([[4,0,6,9], [0,1,2,3]])
[i for i, e in enumerate(x) if (e == z).all(1).any()]
输出:
[0, 1]
推荐阅读
- python - 从 tensorflow.js 中的 csv 数据中删除重复行
- javascript - 使用springmvc框架的jQuery Ajax文件上传返回415
- swift - Swift 自动执行异步
- html - 将网页元素复制或导出为 html 文件......这有可能吗?
- variables - Terraform 默认地图值
- javascript - 使用javascript的登录界面
- session - 在 keycloak 中自定义用户会话数据
- node.js - Docker 构建错误:- npm ERR!超出最大调用堆栈大小
- stripe-payments - 在 webhook 触发器中更改 Stripe 示例电子邮件
- c# - 从网络框架应用程序使用托管标识连接到 Azure 应用程序配置