[英]Converting numpy array which elements are numpy arrays to a list of numpy arrays
[英]Numpy find identical elements from list of arrays and another array
假设我有两个列表a
和b
, a
是带有子数组的一维数组, b 是没有子数组的二维数组。 如何在a
中找到与b
相同的元素,同时将子数组的结构保持在a
中?
a = [array([[1,1,1],
[2,2,2],
[3,4,5]]),
array([[0,0,0],
[3,3,3],
[5,5,5],
[9,3,3],
[8,2,2]]),
]
b = array([[0,1,2],
[3,4,5],
[5,5,5],
[9,3,3],
[9,9,9]])
在这种情况下,相同的元素是[3,4,5],[5,5,5],[9,3,3]
我希望结果如下:(以及在a
中提取索引)
>>> [array([[3,4,5]]),
array([[5,5,5],
[9,3,3]])
]
在numpy中有什么简单的方法吗?
假设a
是一个数组列表,您可以使用广播来执行所有元素的比较:
out = [x[(x == b[:,None]).all(2).any(0)] for x in a]
输出:
[array([[3, 4, 5]]),
array([[5, 5, 5],
[9, 3, 3]])]
指数:
[np.where((x == b[:,None]).all(2).any(0))[0] for x in a]
输出:
[array([2]), array([2, 3])]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.