我试图从元素匹配的两个数组中获取元素和索引。我认为我想得太多了,但我已经尝试了where
函数和交集,但无法让它工作。我的实际阵列要长得多,但这里有两个简单的阵列来演示我想要的:
import numpy as np
arr1 = np.array([0.00, 0.016, 0.033, 0.050, 0.067])
arr2 = np.array([0.016, 0.033, 0.050, 0.067, 0.083])
ind = np.intersect1d(np.where(arr1 >= 0.01), np.where(arr2 >= 0.01))
打印ind
显示array([1, 2, 3, 4])
。从技术上讲,我需要来自arr1
的元素1, 2, 3, 4
和来自arr2
的元素0, 1, 2, 3
,这将给出两个数组中匹配的元素0.016, 0.033, 0.050, 0.067
np.where
将类似arr1 >= 0.01
的布尔掩码转换为索引。您可以直接使用遮罩进行选择,但它不是可逆的。您需要反转索引,因为您希望与原始阵列相交,而不是与选择相交。确保设置return_indices=True
以从intersect1d
获取索引:当您直接从交叉点获取
elements
时,索引ind1
和ind2
正在引用屏蔽的选择。因为index1
是selection1
中每个元素的原始索引,所以index1[ind1]
将ind1
转换回arr1
参考帧你原来的表情其实毫无意义。您正在与满足条件的每个数组中的索引相交。这与这些索引的值无关(根本不需要匹配)。看似正确的结果纯粹是基于偶然阵列构造的巧合
相关问题 更多 >
编程相关推荐