2024-09-27 02:26:52 发布
网友
假设我有
[[array([x1, y1]), z1] [array([x2, y1]), z2] ...... [array([xn, yn]), zn] ]
我想找到array([x5, y5])的索引。怎样才能有效地发现使用NumPy?在
array([x5, y5])
首先,由于混合数据格式,我不认为您可以以矢量化的方式提取数组。因此,可以使用loop comprehension从每个列表元素中提取与数组相对应的第一个元素作为2D数组。假设A是输入列表,我们将-
loop comprehension
2D
A
arr = np.vstack([a[0] for a in A])
然后,只需使用^{}以矢量化的方式进行比较,因为它将沿着所有行广播该比较,并用np.all(axis=1)查找所有匹配的行。最后,使用np.flatnonzero得到最终的索引。因此,谜团的最后一个平静就是-
np.all(axis=1)
np.flatnonzero
您可以阅读^{}的答案,看看在这样的1D数组搜索2D数组问题中获取索引的其他方法。在
1D
样本运行-
In [140]: A Out[140]: [[array([3, 4]), 11], [array([2, 1]), 12], [array([4, 2]), 16], [array([2, 1]), 21]] In [141]: search1D = [2,1] In [142]: arr = np.vstack([a[0] for a in A]) # Extract 2D array In [143]: arr Out[143]: array([[3, 4], [2, 1], [4, 2], [2, 1]]) In [144]: np.flatnonzero((arr == search1D).all(1)) # Finally get indices Out[144]: array([1, 3])
首先,由于混合数据格式,我不认为您可以以矢量化的方式提取数组。因此,可以使用
loop comprehension
从每个列表元素中提取与数组相对应的第一个元素作为2D
数组。假设A
是输入列表,我们将-然后,只需使用^{} 以矢量化的方式进行比较,因为它将沿着所有行广播该比较,并用
^{pr2}$np.all(axis=1)
查找所有匹配的行。最后,使用np.flatnonzero
得到最终的索引。因此,谜团的最后一个平静就是-您可以阅读^{} 的答案,看看在这样的
1D
数组搜索2D
数组问题中获取索引的其他方法。在样本运行-
相关问题 更多 >
编程相关推荐