“在" numpy数组的运算符? [英] "In" operator for numpy arrays?

查看:52
本文介绍了“在" numpy数组的运算符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆