“在" numpy数组的运算符? [英] "In" operator for numpy arrays?
问题描述
如何在numpy数组上执行输入"操作? (如果给定的numpy数组中存在元素,则返回True)
How can I do the "in" operation on a numpy array? (Return True if an element is present in the given numpy array)
对于字符串,列表和字典,该功能直观易懂.
For strings, lists and dictionaries, the functionality is intuitive to understand.
这是将其应用于numpy数组时得到的结果
Here's what I got when I applied that on a numpy array
a
array([[[2, 3, 0],
[1, 0, 1]],
[[3, 2, 0],
[0, 1, 1]],
[[2, 2, 0],
[1, 1, 1]],
[[1, 3, 0],
[2, 0, 1]],
[[3, 1, 0],
[0, 2, 1]]])
b = [[3, 2, 0],
[0, 1, 1]]
b in a
True
#Aligned with the expectation
c = [[300, 200, 0],
[0, 100, 100]]
c in a
True
#Not quite what I expected
推荐答案
您可以比较equality
的输入数组,该数组将执行 ALL
匹配最后两个轴,最后检查
You could compare the input arrays for equality
, which will perform broadcasted
comparisons across all elements in a
at each position in the last two axes against elements at corresponding positions in the second array. This will result in a boolean array of matches, in which we check for ALL
matches across the last two axes and finally check for ANY
match, like so -
((a==b).all(axis=(1,2))).any()
样品运行
1)输入:
In [68]: a
Out[68]:
array([[[2, 3, 0],
[1, 0, 1]],
[[3, 2, 0],
[0, 1, 1]],
[[2, 2, 0],
[1, 1, 1]],
[[1, 3, 0],
[2, 0, 1]],
[[3, 1, 0],
[0, 2, 1]]])
In [69]: b
Out[69]:
array([[3, 2, 0],
[0, 1, 1]])
2)广播的元素比较:
2) Broadcasted elementwise comparisons :
In [70]: a==b
Out[70]:
array([[[False, False, True],
[False, False, True]],
[[ True, True, True],
[ True, True, True]],
[[False, True, True],
[False, True, True]],
[[False, False, True],
[False, False, True]],
[[ True, False, True],
[ True, False, True]]], dtype=bool)
3)ALL
在最后两个轴上匹配,最后ANY
匹配:
3) ALL
match across last two axes and finally ANY
match :
In [71]: (a==b).all(axis=(1,2))
Out[71]: array([False, True, False, False, False], dtype=bool)
In [72]: ((a==b).all(axis=(1,2))).any()
Out[72]: True
按照a
中的c
的类似步骤-
In [73]: c
Out[73]:
array([[300, 200, 0],
[ 0, 100, 100]])
In [74]: ((a==c).all(axis=(1,2))).any()
Out[74]: False
这篇关于“在" numpy数组的运算符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!